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 0b37971..807a853 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
@@ -11031,6 +11031,61 @@ void cJSON_DeleteLock(struct Lock * x) {
     }
 }
 
+struct MakeDictEncoder * cJSON_ParseMakeDictEncoder(const char * s) {
+    struct MakeDictEncoder * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetMakeDictEncoderValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct MakeDictEncoder * cJSON_GetMakeDictEncoderValue(const cJSON * j) {
+    struct MakeDictEncoder * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct MakeDictEncoder)))) {
+            memset(x, 0, sizeof(struct MakeDictEncoder));
+            if (!cJSON_HasObjectItem(j, "makeDictEncoder")) { cJSON_DeleteMakeDictEncoder(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "makeDictEncoder")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "makeDictEncoder"))) { cJSON_DeleteMakeDictEncoder(x); return NULL; }
+                x->make_dict_encoder = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "makeDictEncoder"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateMakeDictEncoder(const struct MakeDictEncoder * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "makeDictEncoder", x->make_dict_encoder);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintMakeDictEncoder(const struct MakeDictEncoder * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateMakeDictEncoder(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteMakeDictEncoder(struct MakeDictEncoder * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Map * cJSON_ParseMap(const char * s) {
     struct Map * x = NULL;
     if (NULL != s) {
@@ -11416,116 +11471,6 @@ void cJSON_DeleteNewtonsoft(struct Newtonsoft * x) {
     }
 }
 
-struct Nil * cJSON_ParseNil(const char * s) {
-    struct Nil * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetNilValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Nil * cJSON_GetNilValue(const cJSON * j) {
-    struct Nil * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Nil)))) {
-            memset(x, 0, sizeof(struct Nil));
-            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteNil(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "nil")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteNil(x); return NULL; }
-                x->nil = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNil(const struct Nil * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "nil", x->nil);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNil(const struct Nil * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNil(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNil(struct Nil * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct No * cJSON_ParseNo(const char * s) {
-    struct No * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetNoValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct No * cJSON_GetNoValue(const cJSON * j) {
-    struct No * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct No)))) {
-            memset(x, 0, sizeof(struct No));
-            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteNo(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "NO")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteNo(x); return NULL; }
-                x->no = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNo(const struct No * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "NO", x->no);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNo(const struct No * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNo(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNo(struct No * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
 struct Goto * cJSON_ParseGoto(const char * s) {
     struct Goto * x = NULL;
     if (NULL != s) {
@@ -12374,6 +12319,12 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->lock = cJSON_GetLockValue(cJSON_GetObjectItemCaseSensitive(j, "lock"));
                 if (NULL == x->lock) { cJSON_DeleteObj3(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "makeDictEncoder")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "makeDictEncoder")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "makeDictEncoder"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->make_dict_encoder = cJSON_GetMakeDictEncoderValue(cJSON_GetObjectItemCaseSensitive(j, "makeDictEncoder"));
+                if (NULL == x->make_dict_encoder) { cJSON_DeleteObj3(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "map")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "map")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "map"))) { cJSON_DeleteObj3(x); return NULL; }
@@ -12416,18 +12367,6 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->newtonsoft = cJSON_GetNewtonsoftValue(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"));
                 if (NULL == x->newtonsoft) { cJSON_DeleteObj3(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "nil")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->nil = cJSON_GetNilValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
-                if (NULL == x->nil) { cJSON_DeleteObj3(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "NO")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->no = cJSON_GetNoValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
-                if (NULL == x->no) { cJSON_DeleteObj3(x); return NULL; }
-            }
             if (!cJSON_HasObjectItem(j, "goto")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "goto")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "goto"))) { cJSON_DeleteObj3(x); return NULL; }
@@ -12544,6 +12483,7 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             cJSON_AddItemToObject(j, "list", cJSON_CreateList(x->list));
             cJSON_AddItemToObject(j, "Locale", cJSON_CreateLocale(x->locale));
             cJSON_AddItemToObject(j, "lock", cJSON_CreateLock(x->lock));
+            cJSON_AddItemToObject(j, "makeDictEncoder", cJSON_CreateMakeDictEncoder(x->make_dict_encoder));
             cJSON_AddItemToObject(j, "map", cJSON_CreateMap(x->map));
             cJSON_AddItemToObject(j, "MapEntry", cJSON_CreateMapEntry(x->map_entry));
             cJSON_AddItemToObject(j, "MarshalJSON", cJSON_CreateMarshalJson(x->marshal_json));
@@ -12551,8 +12491,6 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             cJSON_AddItemToObject(j, "mutating", cJSON_CreateMutating(x->mutating));
             cJSON_AddItemToObject(j, "native", cJSON_CreateNative(x->native));
             cJSON_AddItemToObject(j, "newtonsoft", cJSON_CreateNewtonsoft(x->newtonsoft));
-            cJSON_AddItemToObject(j, "nil", cJSON_CreateNil(x->nil));
-            cJSON_AddItemToObject(j, "NO", cJSON_CreateNo(x->no));
             cJSON_AddItemToObject(j, "goto", cJSON_CreateGoto(x->obj3_goto));
             cJSON_AddItemToObject(j, "if", cJSON_CreateIf(x->obj3_if));
             cJSON_AddItemToObject(j, "import", cJSON_CreateImport(x->obj3_import));
@@ -12720,6 +12658,9 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->lock) {
             cJSON_DeleteLock(x->lock);
         }
+        if (NULL != x->make_dict_encoder) {
+            cJSON_DeleteMakeDictEncoder(x->make_dict_encoder);
+        }
         if (NULL != x->map) {
             cJSON_DeleteMap(x->map);
         }
@@ -12741,12 +12682,6 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->newtonsoft) {
             cJSON_DeleteNewtonsoft(x->newtonsoft);
         }
-        if (NULL != x->nil) {
-            cJSON_DeleteNil(x->nil);
-        }
-        if (NULL != x->no) {
-            cJSON_DeleteNo(x->no);
-        }
         if (NULL != x->obj3_goto) {
             cJSON_DeleteGoto(x->obj3_goto);
         }
@@ -12781,6 +12716,116 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
     }
 }
 
+struct Nil * cJSON_ParseNil(const char * s) {
+    struct Nil * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNilValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Nil * cJSON_GetNilValue(const cJSON * j) {
+    struct Nil * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Nil)))) {
+            memset(x, 0, sizeof(struct Nil));
+            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteNil(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "nil")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteNil(x); return NULL; }
+                x->nil = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNil(const struct Nil * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "nil", x->nil);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNil(const struct Nil * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNil(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNil(struct Nil * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct No * cJSON_ParseNo(const char * s) {
+    struct No * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNoValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct No * cJSON_GetNoValue(const cJSON * j) {
+    struct No * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct No)))) {
+            memset(x, 0, sizeof(struct No));
+            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteNo(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "NO")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteNo(x); return NULL; }
+                x->no = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNo(const struct No * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "NO", x->no);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNo(const struct No * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNo(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNo(struct No * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct NoSuchMethod * cJSON_ParseNoSuchMethod(const char * s) {
     struct NoSuchMethod * x = NULL;
     if (NULL != s) {
@@ -16204,116 +16249,6 @@ void cJSON_DeleteSbyte(struct Sbyte * x) {
     }
 }
 
-struct Sealed * cJSON_ParseSealed(const char * s) {
-    struct Sealed * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSealedValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Sealed * cJSON_GetSealedValue(const cJSON * j) {
-    struct Sealed * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Sealed)))) {
-            memset(x, 0, sizeof(struct Sealed));
-            if (!cJSON_HasObjectItem(j, "sealed")) { cJSON_DeleteSealed(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "sealed")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "sealed"))) { cJSON_DeleteSealed(x); return NULL; }
-                x->sealed = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "sealed"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateSealed(const struct Sealed * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "sealed", x->sealed);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintSealed(const struct Sealed * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateSealed(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteSealed(struct Sealed * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Sel * cJSON_ParseSel(const char * s) {
-    struct Sel * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSelValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Sel * cJSON_GetSelValue(const cJSON * j) {
-    struct Sel * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Sel)))) {
-            memset(x, 0, sizeof(struct Sel));
-            if (!cJSON_HasObjectItem(j, "SEL")) { cJSON_DeleteSel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "SEL")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SEL"))) { cJSON_DeleteSel(x); return NULL; }
-                x->sel = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SEL"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateSel(const struct Sel * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "SEL", x->sel);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintSel(const struct Sel * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateSel(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteSel(struct Sel * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
 struct Obj4 * cJSON_ParseObj4(const char * s) {
     struct Obj4 * x = NULL;
     if (NULL != s) {
@@ -16336,6 +16271,18 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 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, "nil")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "nil")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->nil = cJSON_GetNilValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
+                if (NULL == x->nil) { cJSON_DeleteObj4(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "NO")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->no = cJSON_GetNoValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
+                if (NULL == x->no) { cJSON_DeleteObj4(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "noSuchMethod")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "noSuchMethod")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "noSuchMethod"))) { cJSON_DeleteObj4(x); return NULL; }
@@ -16708,18 +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; }
-            }
         }
     }
     return x;
@@ -16730,6 +16665,8 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
+            cJSON_AddItemToObject(j, "nil", cJSON_CreateNil(x->nil));
+            cJSON_AddItemToObject(j, "NO", cJSON_CreateNo(x->no));
             cJSON_AddItemToObject(j, "noSuchMethod", cJSON_CreateNoSuchMethod(x->no_such_method));
             cJSON_AddItemToObject(j, "nonatomic", cJSON_CreateNonatomic(x->nonatomic));
             cJSON_AddItemToObject(j, "None", cJSON_CreateNone(x->none));
@@ -16792,8 +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));
         }
     }
     return j;
@@ -16813,6 +16748,12 @@ char * cJSON_PrintObj4(const struct Obj4 * x) {
 
 void cJSON_DeleteObj4(struct Obj4 * x) {
     if (NULL != x) {
+        if (NULL != x->nil) {
+            cJSON_DeleteNil(x->nil);
+        }
+        if (NULL != x->no) {
+            cJSON_DeleteNo(x->no);
+        }
         if (NULL != x->no_such_method) {
             cJSON_DeleteNoSuchMethod(x->no_such_method);
         }
@@ -16999,12 +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);
-        }
         cJSON_free(x);
     }
 }
@@ -18231,35 +18166,145 @@ struct Union * cJSON_ParseUnion(const char * s) {
     return x;
 }
 
-struct Union * cJSON_GetUnionValue(const cJSON * j) {
-    struct Union * x = NULL;
+struct Union * cJSON_GetUnionValue(const cJSON * j) {
+    struct Union * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Union)))) {
+            memset(x, 0, sizeof(struct Union));
+            if (!cJSON_HasObjectItem(j, "union")) { cJSON_DeleteUnion(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "union")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "union"))) { cJSON_DeleteUnion(x); return NULL; }
+                x->union_union = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "union"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUnion(const struct Union * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "union", x->union_union);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUnion(const struct Union * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUnion(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUnion(struct Union * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s) {
+    struct PrimitiveKind * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetPrimitiveKindValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j) {
+    struct PrimitiveKind * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct PrimitiveKind)))) {
+            memset(x, 0, sizeof(struct PrimitiveKind));
+            if (!cJSON_HasObjectItem(j, "PrimitiveKind")) { cJSON_DeletePrimitiveKind(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "PrimitiveKind")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"))) { cJSON_DeletePrimitiveKind(x); return NULL; }
+                x->primitive_kind = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreatePrimitiveKind(const struct PrimitiveKind * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "PrimitiveKind", x->primitive_kind);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreatePrimitiveKind(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeletePrimitiveKind(struct PrimitiveKind * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Obj5True * cJSON_ParseObj5True(const char * s) {
+    struct Obj5True * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetObj5TrueValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Obj5True * cJSON_GetObj5TrueValue(const cJSON * j) {
+    struct Obj5True * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Union)))) {
-            memset(x, 0, sizeof(struct Union));
-            if (!cJSON_HasObjectItem(j, "union")) { cJSON_DeleteUnion(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "union")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "union"))) { cJSON_DeleteUnion(x); return NULL; }
-                x->union_union = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "union"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Obj5True)))) {
+            memset(x, 0, sizeof(struct Obj5True));
+            if (!cJSON_HasObjectItem(j, "true")) { cJSON_DeleteObj5True(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "true")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "true"))) { cJSON_DeleteObj5True(x); return NULL; }
+                x->true_true = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "true"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUnion(const struct Union * x) {
+cJSON * cJSON_CreateObj5True(const struct Obj5True * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "union", x->union_union);
+            cJSON_AddNumberToObject(j, "true", x->true_true);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUnion(const struct Union * x) {
+char * cJSON_PrintObj5True(const struct Obj5True * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUnion(x);
+        cJSON * j = cJSON_CreateObj5True(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18268,53 +18313,53 @@ char * cJSON_PrintUnion(const struct Union * x) {
     return s;
 }
 
-void cJSON_DeleteUnion(struct Union * x) {
+void cJSON_DeleteObj5True(struct Obj5True * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s) {
-    struct PrimitiveKind * 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_GetPrimitiveKindValue(j);
+            x = cJSON_GetSealedValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j) {
-    struct PrimitiveKind * x = NULL;
+struct Sealed * cJSON_GetSealedValue(const cJSON * j) {
+    struct Sealed * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct PrimitiveKind)))) {
-            memset(x, 0, sizeof(struct PrimitiveKind));
-            if (!cJSON_HasObjectItem(j, "PrimitiveKind")) { cJSON_DeletePrimitiveKind(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "PrimitiveKind")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"))) { cJSON_DeletePrimitiveKind(x); return NULL; }
-                x->primitive_kind = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"));
+        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_CreatePrimitiveKind(const struct PrimitiveKind * x) {
+cJSON * cJSON_CreateSealed(const struct Sealed * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "PrimitiveKind", x->primitive_kind);
+            cJSON_AddNumberToObject(j, "sealed", x->sealed);
         }
     }
     return j;
 }
 
-char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x) {
+char * cJSON_PrintSealed(const struct Sealed * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreatePrimitiveKind(x);
+        cJSON * j = cJSON_CreateSealed(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18323,53 +18368,53 @@ char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x) {
     return s;
 }
 
-void cJSON_DeletePrimitiveKind(struct PrimitiveKind * x) {
+void cJSON_DeleteSealed(struct Sealed * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Obj5True * cJSON_ParseObj5True(const char * s) {
-    struct Obj5True * x = NULL;
+struct Sel * cJSON_ParseSel(const char * s) {
+    struct Sel * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetObj5TrueValue(j);
+            x = cJSON_GetSelValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Obj5True * cJSON_GetObj5TrueValue(const cJSON * j) {
-    struct Obj5True * x = NULL;
+struct Sel * cJSON_GetSelValue(const cJSON * j) {
+    struct Sel * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Obj5True)))) {
-            memset(x, 0, sizeof(struct Obj5True));
-            if (!cJSON_HasObjectItem(j, "true")) { cJSON_DeleteObj5True(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "true")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "true"))) { cJSON_DeleteObj5True(x); return NULL; }
-                x->true_true = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "true"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct 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_CreateObj5True(const struct Obj5True * x) {
+cJSON * cJSON_CreateSel(const struct Sel * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "true", x->true_true);
+            cJSON_AddNumberToObject(j, "SEL", x->sel);
         }
     }
     return j;
 }
 
-char * cJSON_PrintObj5True(const struct Obj5True * x) {
+char * cJSON_PrintSel(const struct Sel * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateObj5True(x);
+        cJSON * j = cJSON_CreateSel(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18378,7 +18423,7 @@ char * cJSON_PrintObj5True(const struct Obj5True * x) {
     return s;
 }
 
-void cJSON_DeleteObj5True(struct Obj5True * x) {
+void cJSON_DeleteSel(struct Sel * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -20349,172 +20394,7 @@ cJSON * cJSON_CreateUndefined(const struct Undefined * x) {
 char * cJSON_PrintUndefined(const struct Undefined * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUndefined(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUndefined(struct Undefined * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct UnmarshalJson * cJSON_ParseUnmarshalJson(const char * s) {
-    struct UnmarshalJson * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUnmarshalJsonValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct UnmarshalJson * cJSON_GetUnmarshalJsonValue(const cJSON * j) {
-    struct UnmarshalJson * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct UnmarshalJson)))) {
-            memset(x, 0, sizeof(struct UnmarshalJson));
-            if (!cJSON_HasObjectItem(j, "UnmarshalJSON")) { cJSON_DeleteUnmarshalJson(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "UnmarshalJSON")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UnmarshalJSON"))) { cJSON_DeleteUnmarshalJson(x); return NULL; }
-                x->unmarshal_json = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UnmarshalJSON"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUnmarshalJson(const struct UnmarshalJson * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "UnmarshalJSON", x->unmarshal_json);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUnmarshalJson(const struct UnmarshalJson * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUnmarshalJson(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUnmarshalJson(struct UnmarshalJson * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Unowned * cJSON_ParseUnowned(const char * s) {
-    struct Unowned * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUnownedValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Unowned * cJSON_GetUnownedValue(const cJSON * j) {
-    struct Unowned * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Unowned)))) {
-            memset(x, 0, sizeof(struct Unowned));
-            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteUnowned(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unowned")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteUnowned(x); return NULL; }
-                x->unowned = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUnowned(const struct Unowned * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "unowned", x->unowned);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUnowned(const struct Unowned * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUnowned(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUnowned(struct Unowned * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct 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);
+        cJSON * j = cJSON_CreateUndefined(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20523,53 +20403,53 @@ char * cJSON_PrintUnsafe(const struct Unsafe * x) {
     return s;
 }
 
-void cJSON_DeleteUnsafe(struct Unsafe * x) {
+void cJSON_DeleteUndefined(struct Undefined * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct UseSerializers * cJSON_ParseUseSerializers(const char * s) {
-    struct UseSerializers * x = NULL;
+struct UnmarshalJson * cJSON_ParseUnmarshalJson(const char * s) {
+    struct UnmarshalJson * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUseSerializersValue(j);
+            x = cJSON_GetUnmarshalJsonValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j) {
-    struct UseSerializers * x = NULL;
+struct UnmarshalJson * cJSON_GetUnmarshalJsonValue(const cJSON * j) {
+    struct UnmarshalJson * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct UseSerializers)))) {
-            memset(x, 0, sizeof(struct UseSerializers));
-            if (!cJSON_HasObjectItem(j, "UseSerializers")) { cJSON_DeleteUseSerializers(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "UseSerializers")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteUseSerializers(x); return NULL; }
-                x->use_serializers = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct UnmarshalJson)))) {
+            memset(x, 0, sizeof(struct UnmarshalJson));
+            if (!cJSON_HasObjectItem(j, "UnmarshalJSON")) { cJSON_DeleteUnmarshalJson(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UnmarshalJSON")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UnmarshalJSON"))) { cJSON_DeleteUnmarshalJson(x); return NULL; }
+                x->unmarshal_json = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UnmarshalJSON"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x) {
+cJSON * cJSON_CreateUnmarshalJson(const struct UnmarshalJson * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "UseSerializers", x->use_serializers);
+            cJSON_AddNumberToObject(j, "UnmarshalJSON", x->unmarshal_json);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUseSerializers(const struct UseSerializers * x) {
+char * cJSON_PrintUnmarshalJson(const struct UnmarshalJson * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUseSerializers(x);
+        cJSON * j = cJSON_CreateUnmarshalJson(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20578,7 +20458,7 @@ char * cJSON_PrintUseSerializers(const struct UseSerializers * x) {
     return s;
 }
 
-void cJSON_DeleteUseSerializers(struct UseSerializers * x) {
+void cJSON_DeleteUnmarshalJson(struct UnmarshalJson * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -20756,6 +20636,18 @@ 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; }
@@ -20978,24 +20870,6 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->unmarshal_json = cJSON_GetUnmarshalJsonValue(cJSON_GetObjectItemCaseSensitive(j, "UnmarshalJSON"));
                 if (NULL == x->unmarshal_json) { cJSON_DeleteObj5(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unowned")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->unowned = cJSON_GetUnownedValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
-                if (NULL == x->unowned) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "unsafe")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unsafe")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unsafe"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->unsafe = cJSON_GetUnsafeValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
-                if (NULL == x->unsafe) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "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; }
-            }
         }
     }
     return x;
@@ -21031,6 +20905,8 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             cJSON_AddItemToObject(j, "union", cJSON_CreateUnion(x->obj5_union));
             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));
@@ -21068,9 +20944,6 @@ 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, "UnmarshalJSON", cJSON_CreateUnmarshalJson(x->unmarshal_json));
-            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));
         }
     }
     return j;
@@ -21165,6 +21038,12 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         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);
         }
@@ -21276,15 +21155,6 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         if (NULL != x->unmarshal_json) {
             cJSON_DeleteUnmarshalJson(x->unmarshal_json);
         }
-        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);
-        }
         cJSON_free(x);
     }
 }
@@ -21784,6 +21654,171 @@ void cJSON_DeleteXorEq(struct XorEq * x) {
     }
 }
 
+struct Unowned * cJSON_ParseUnowned(const char * s) {
+    struct Unowned * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUnownedValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Unowned * cJSON_GetUnownedValue(const cJSON * j) {
+    struct Unowned * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Unowned)))) {
+            memset(x, 0, sizeof(struct Unowned));
+            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteUnowned(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unowned")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteUnowned(x); return NULL; }
+                x->unowned = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUnowned(const struct Unowned * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "unowned", x->unowned);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUnowned(const struct Unowned * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUnowned(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUnowned(struct Unowned * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct 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) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUseSerializersValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j) {
+    struct UseSerializers * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct UseSerializers)))) {
+            memset(x, 0, sizeof(struct UseSerializers));
+            if (!cJSON_HasObjectItem(j, "UseSerializers")) { cJSON_DeleteUseSerializers(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UseSerializers")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteUseSerializers(x); return NULL; }
+                x->use_serializers = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "UseSerializers", x->use_serializers);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUseSerializers(const struct UseSerializers * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUseSerializers(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUseSerializers(struct UseSerializers * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Ushort * cJSON_ParseUshort(const char * s) {
     struct Ushort * x = NULL;
     if (NULL != s) {
@@ -22465,6 +22500,24 @@ struct Obj6 * cJSON_GetObj6Value(const cJSON * j) {
                 x->obj6_xor_eq = cJSON_GetXorEqValue(cJSON_GetObjectItemCaseSensitive(j, "xor_eq"));
                 if (NULL == x->obj6_xor_eq) { cJSON_DeleteObj6(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unowned")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->unowned = cJSON_GetUnownedValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
+                if (NULL == x->unowned) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "unsafe")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unsafe")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unsafe"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->unsafe = cJSON_GetUnsafeValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
+                if (NULL == x->unsafe) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "UseSerializers")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UseSerializers")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->use_serializers = cJSON_GetUseSerializersValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
+                if (NULL == x->use_serializers) { 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; }
@@ -22550,6 +22603,9 @@ 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, "unowned", cJSON_CreateUnowned(x->unowned));
+            cJSON_AddItemToObject(j, "unsafe", cJSON_CreateUnsafe(x->unsafe));
+            cJSON_AddItemToObject(j, "UseSerializers", cJSON_CreateUseSerializers(x->use_serializers));
             cJSON_AddItemToObject(j, "ushort", cJSON_CreateUshort(x->ushort));
             cJSON_AddItemToObject(j, "Utf8JsonReader", cJSON_CreateUtf8JsonReader(x->utf8_json_reader));
             cJSON_AddItemToObject(j, "Utf8JsonWriter", cJSON_CreateUtf8JsonWriter(x->utf8_json_writer));
@@ -22607,6 +22663,15 @@ void cJSON_DeleteObj6(struct Obj6 * x) {
         if (NULL != x->obj6_xor_eq) {
             cJSON_DeleteXorEq(x->obj6_xor_eq);
         }
+        if (NULL != x->unowned) {
+            cJSON_DeleteUnowned(x->unowned);
+        }
+        if (NULL != x->unsafe) {
+            cJSON_DeleteUnsafe(x->unsafe);
+        }
+        if (NULL != x->use_serializers) {
+            cJSON_DeleteUseSerializers(x->use_serializers);
+        }
         if (NULL != x->ushort) {
             cJSON_DeleteUshort(x->ushort);
         }
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 ff4c539..5e61ad7 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
@@ -885,6 +885,10 @@ struct Lock {
     int64_t lock;
 };
 
+struct MakeDictEncoder {
+    int64_t make_dict_encoder;
+};
+
 struct Map {
     int64_t map;
 };
@@ -913,14 +917,6 @@ struct Newtonsoft {
     int64_t newtonsoft;
 };
 
-struct Nil {
-    int64_t nil;
-};
-
-struct No {
-    int64_t no;
-};
-
 struct Goto {
     int64_t goto_goto;
 };
@@ -1009,6 +1005,7 @@ struct Obj3 {
     struct List * list;
     struct Locale * locale;
     struct Lock * lock;
+    struct MakeDictEncoder * make_dict_encoder;
     struct Map * map;
     struct MapEntry * map_entry;
     struct MarshalJson * marshal_json;
@@ -1016,8 +1013,6 @@ struct Obj3 {
     struct Mutating * mutating;
     struct Native * native;
     struct Newtonsoft * newtonsoft;
-    struct Nil * nil;
-    struct No * no;
     struct Goto * obj3_goto;
     struct If * obj3_if;
     struct Import * obj3_import;
@@ -1030,6 +1025,14 @@ struct Obj3 {
     struct New * obj3_new;
 };
 
+struct Nil {
+    int64_t nil;
+};
+
+struct No {
+    int64_t no;
+};
+
 struct NoSuchMethod {
     int64_t no_such_method;
 };
@@ -1278,16 +1281,10 @@ struct Sbyte {
     int64_t sbyte;
 };
 
-struct Sealed {
-    int64_t sealed;
-};
-
-struct Sel {
-    int64_t sel;
-};
-
 struct Obj4 {
     int64_t dummy;
+    struct Nil * nil;
+    struct No * no;
     struct NoSuchMethod * no_such_method;
     struct Nonatomic * nonatomic;
     struct None * none;
@@ -1350,8 +1347,6 @@ struct Obj4 {
     struct RuntimeType * runtime_type;
     struct S * s;
     struct Sbyte * sbyte;
-    struct Sealed * sealed;
-    struct Sel * sel;
 };
 
 struct KSerializer {
@@ -1454,6 +1449,14 @@ struct Obj5True {
     int64_t true_true;
 };
 
+struct Sealed {
+    int64_t sealed;
+};
+
+struct Sel {
+    int64_t sel;
+};
+
 struct Select {
     int64_t select;
 };
@@ -1602,18 +1605,6 @@ struct UnmarshalJson {
     int64_t unmarshal_json;
 };
 
-struct Unowned {
-    int64_t unowned;
-};
-
-struct Unsafe {
-    int64_t unsafe;
-};
-
-struct UseSerializers {
-    int64_t use_serializers;
-};
-
 struct Obj5 {
     int64_t dummy;
     struct KSerializer * k_serializer;
@@ -1641,6 +1632,8 @@ struct Obj5 {
     struct Union * obj5_union;
     struct PrimitiveKind * primitive_kind;
     struct Obj5True * purple_true;
+    struct Sealed * sealed;
+    struct Sel * sel;
     struct Select * select;
     struct Self * self;
     struct Sendable * sendable;
@@ -1678,9 +1671,6 @@ struct Obj5 {
     struct Unchecked * unchecked;
     struct Undefined * undefined;
     struct UnmarshalJson * unmarshal_json;
-    struct Unowned * unowned;
-    struct Unsafe * unsafe;
-    struct UseSerializers * use_serializers;
 };
 
 struct Unsigned {
@@ -1719,6 +1709,18 @@ struct XorEq {
     int64_t xor_eq_xor_eq;
 };
 
+struct Unowned {
+    int64_t unowned;
+};
+
+struct Unsafe {
+    int64_t unsafe;
+};
+
+struct UseSerializers {
+    int64_t use_serializers;
+};
+
 struct Ushort {
     int64_t ushort;
 };
@@ -1774,6 +1776,9 @@ struct Obj6 {
     struct While * obj6_while;
     struct Xor * obj6_xor;
     struct XorEq * obj6_xor_eq;
+    struct Unowned * unowned;
+    struct Unsafe * unsafe;
+    struct UseSerializers * use_serializers;
     struct Ushort * ushort;
     struct Utf8JsonReader * utf8_json_reader;
     struct Utf8JsonWriter * utf8_json_writer;
@@ -2856,6 +2861,12 @@ cJSON * cJSON_CreateLock(const struct Lock * x);
 char * cJSON_PrintLock(const struct Lock * x);
 void cJSON_DeleteLock(struct Lock * x);
 
+struct MakeDictEncoder * cJSON_ParseMakeDictEncoder(const char * s);
+struct MakeDictEncoder * cJSON_GetMakeDictEncoderValue(const cJSON * j);
+cJSON * cJSON_CreateMakeDictEncoder(const struct MakeDictEncoder * x);
+char * cJSON_PrintMakeDictEncoder(const struct MakeDictEncoder * x);
+void cJSON_DeleteMakeDictEncoder(struct MakeDictEncoder * x);
+
 struct Map * cJSON_ParseMap(const char * s);
 struct Map * cJSON_GetMapValue(const cJSON * j);
 cJSON * cJSON_CreateMap(const struct Map * x);
@@ -2898,18 +2909,6 @@ cJSON * cJSON_CreateNewtonsoft(const struct Newtonsoft * x);
 char * cJSON_PrintNewtonsoft(const struct Newtonsoft * x);
 void cJSON_DeleteNewtonsoft(struct Newtonsoft * x);
 
-struct Nil * cJSON_ParseNil(const char * s);
-struct Nil * cJSON_GetNilValue(const cJSON * j);
-cJSON * cJSON_CreateNil(const struct Nil * x);
-char * cJSON_PrintNil(const struct Nil * x);
-void cJSON_DeleteNil(struct Nil * x);
-
-struct No * cJSON_ParseNo(const char * s);
-struct No * cJSON_GetNoValue(const cJSON * j);
-cJSON * cJSON_CreateNo(const struct No * x);
-char * cJSON_PrintNo(const struct No * x);
-void cJSON_DeleteNo(struct No * x);
-
 struct Goto * cJSON_ParseGoto(const char * s);
 struct Goto * cJSON_GetGotoValue(const cJSON * j);
 cJSON * cJSON_CreateGoto(const struct Goto * x);
@@ -2976,6 +2975,18 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x);
 char * cJSON_PrintObj3(const struct Obj3 * x);
 void cJSON_DeleteObj3(struct Obj3 * x);
 
+struct Nil * cJSON_ParseNil(const char * s);
+struct Nil * cJSON_GetNilValue(const cJSON * j);
+cJSON * cJSON_CreateNil(const struct Nil * x);
+char * cJSON_PrintNil(const struct Nil * x);
+void cJSON_DeleteNil(struct Nil * x);
+
+struct No * cJSON_ParseNo(const char * s);
+struct No * cJSON_GetNoValue(const cJSON * j);
+cJSON * cJSON_CreateNo(const struct No * x);
+char * cJSON_PrintNo(const struct No * x);
+void cJSON_DeleteNo(struct No * x);
+
 struct NoSuchMethod * cJSON_ParseNoSuchMethod(const char * s);
 struct NoSuchMethod * cJSON_GetNoSuchMethodValue(const cJSON * j);
 cJSON * cJSON_CreateNoSuchMethod(const struct NoSuchMethod * x);
@@ -3348,18 +3359,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 Obj4 * cJSON_ParseObj4(const char * s);
 struct Obj4 * cJSON_GetObj4Value(const cJSON * j);
 cJSON * cJSON_CreateObj4(const struct Obj4 * x);
@@ -3516,6 +3515,18 @@ 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);
@@ -3738,24 +3749,6 @@ cJSON * cJSON_CreateUnmarshalJson(const struct UnmarshalJson * x);
 char * cJSON_PrintUnmarshalJson(const struct UnmarshalJson * x);
 void cJSON_DeleteUnmarshalJson(struct UnmarshalJson * x);
 
-struct Unowned * cJSON_ParseUnowned(const char * s);
-struct Unowned * cJSON_GetUnownedValue(const cJSON * j);
-cJSON * cJSON_CreateUnowned(const struct Unowned * x);
-char * cJSON_PrintUnowned(const struct Unowned * x);
-void cJSON_DeleteUnowned(struct Unowned * x);
-
-struct Unsafe * cJSON_ParseUnsafe(const char * s);
-struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j);
-cJSON * cJSON_CreateUnsafe(const struct Unsafe * x);
-char * cJSON_PrintUnsafe(const struct Unsafe * x);
-void cJSON_DeleteUnsafe(struct Unsafe * x);
-
-struct 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 Obj5 * cJSON_ParseObj5(const char * s);
 struct Obj5 * cJSON_GetObj5Value(const cJSON * j);
 cJSON * cJSON_CreateObj5(const struct Obj5 * x);
@@ -3816,6 +3809,24 @@ cJSON * cJSON_CreateXorEq(const struct XorEq * x);
 char * cJSON_PrintXorEq(const struct XorEq * x);
 void cJSON_DeleteXorEq(struct XorEq * x);
 
+struct Unowned * cJSON_ParseUnowned(const char * s);
+struct Unowned * cJSON_GetUnownedValue(const cJSON * j);
+cJSON * cJSON_CreateUnowned(const struct Unowned * x);
+char * cJSON_PrintUnowned(const struct Unowned * x);
+void cJSON_DeleteUnowned(struct Unowned * x);
+
+struct Unsafe * cJSON_ParseUnsafe(const char * s);
+struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j);
+cJSON * cJSON_CreateUnsafe(const struct Unsafe * x);
+char * cJSON_PrintUnsafe(const struct Unsafe * x);
+void cJSON_DeleteUnsafe(struct Unsafe * x);
+
+struct UseSerializers * cJSON_ParseUseSerializers(const char * s);
+struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j);
+cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x);
+char * cJSON_PrintUseSerializers(const struct UseSerializers * x);
+void cJSON_DeleteUseSerializers(struct UseSerializers * x);
+
 struct Ushort * cJSON_ParseUshort(const char * s);
 struct Ushort * cJSON_GetUshortValue(const cJSON * j);
 cJSON * cJSON_CreateUshort(const struct Ushort * x);
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
index 934c40e..a9e173d 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
index 2a64dc5..d15151f 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
index 504b925..2ed28c8 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts b/head/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
index 7b4e86e..6d078d1 100644
--- a/base/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 afea70e..33e8be3 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
@@ -3137,6 +3137,20 @@ namespace quicktype {
         void set_lock(const int64_t & value) { this->lock = value; }
     };
 
+    class MakeDictEncoder {
+        public:
+        MakeDictEncoder() = default;
+        virtual ~MakeDictEncoder() = default;
+
+        private:
+        int64_t make_dict_encoder;
+
+        public:
+        const int64_t & get_make_dict_encoder() const { return make_dict_encoder; }
+        int64_t & get_mutable_make_dict_encoder() { return make_dict_encoder; }
+        void set_make_dict_encoder(const int64_t & value) { this->make_dict_encoder = value; }
+    };
+
     class Map {
         public:
         Map() = default;
@@ -3235,34 +3249,6 @@ namespace quicktype {
         void set_newtonsoft(const int64_t & value) { this->newtonsoft = value; }
     };
 
-    class Nil {
-        public:
-        Nil() = default;
-        virtual ~Nil() = default;
-
-        private:
-        int64_t nil;
-
-        public:
-        const int64_t & get_nil() const { return nil; }
-        int64_t & get_mutable_nil() { return nil; }
-        void set_nil(const int64_t & value) { this->nil = value; }
-    };
-
-    class No {
-        public:
-        No() = default;
-        virtual ~No() = default;
-
-        private:
-        int64_t no;
-
-        public:
-        const int64_t & get_no() const { return no; }
-        int64_t & get_mutable_no() { return no; }
-        void set_no(const int64_t & value) { this->no = value; }
-    };
-
     class Goto {
         public:
         Goto() = default;
@@ -3456,6 +3442,7 @@ namespace quicktype {
         List list;
         Locale locale;
         Lock lock;
+        MakeDictEncoder make_dict_encoder;
         Map map;
         MapEntry map_entry;
         MarshalJson marshal_json;
@@ -3463,8 +3450,6 @@ namespace quicktype {
         Mutating mutating;
         Native native;
         Newtonsoft newtonsoft;
-        Nil nil;
-        No no;
         Goto obj3_goto;
         If obj3_if;
         Import obj3_import;
@@ -3665,6 +3650,10 @@ namespace quicktype {
         Lock & get_mutable_lock() { return lock; }
         void set_lock(const Lock & value) { this->lock = value; }
 
+        const MakeDictEncoder & get_make_dict_encoder() const { return make_dict_encoder; }
+        MakeDictEncoder & get_mutable_make_dict_encoder() { return make_dict_encoder; }
+        void set_make_dict_encoder(const MakeDictEncoder & value) { this->make_dict_encoder = value; }
+
         const Map & get_map() const { return map; }
         Map & get_mutable_map() { return map; }
         void set_map(const Map & value) { this->map = value; }
@@ -3693,14 +3682,6 @@ namespace quicktype {
         Newtonsoft & get_mutable_newtonsoft() { return newtonsoft; }
         void set_newtonsoft(const Newtonsoft & value) { this->newtonsoft = value; }
 
-        const Nil & get_nil() const { return nil; }
-        Nil & get_mutable_nil() { return nil; }
-        void set_nil(const Nil & value) { this->nil = value; }
-
-        const No & get_no() const { return no; }
-        No & get_mutable_no() { return no; }
-        void set_no(const No & value) { this->no = value; }
-
         const Goto & get_obj3_goto() const { return obj3_goto; }
         Goto & get_mutable_obj3_goto() { return obj3_goto; }
         void set_obj3_goto(const Goto & value) { this->obj3_goto = value; }
@@ -3742,6 +3723,34 @@ namespace quicktype {
         void set_obj3_new(const New & value) { this->obj3_new = value; }
     };
 
+    class Nil {
+        public:
+        Nil() = default;
+        virtual ~Nil() = default;
+
+        private:
+        int64_t nil;
+
+        public:
+        const int64_t & get_nil() const { return nil; }
+        int64_t & get_mutable_nil() { return nil; }
+        void set_nil(const int64_t & value) { this->nil = value; }
+    };
+
+    class No {
+        public:
+        No() = default;
+        virtual ~No() = default;
+
+        private:
+        int64_t no;
+
+        public:
+        const int64_t & get_no() const { return no; }
+        int64_t & get_mutable_no() { return no; }
+        void set_no(const int64_t & value) { this->no = value; }
+    };
+
     class NoSuchMethod {
         public:
         NoSuchMethod() = default;
@@ -4610,34 +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 Obj4 {
         public:
         Obj4() = default;
@@ -4645,6 +4626,8 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        Nil nil;
+        No no;
         NoSuchMethod no_such_method;
         Nonatomic nonatomic;
         None none;
@@ -4707,14 +4690,20 @@ namespace quicktype {
         RuntimeType runtime_type;
         S s;
         Sbyte sbyte;
-        Sealed sealed;
-        Sel sel;
 
         public:
         const int64_t & get_dummy() const { return dummy; }
         int64_t & get_mutable_dummy() { return dummy; }
         void set_dummy(const int64_t & value) { this->dummy = value; }
 
+        const Nil & get_nil() const { return nil; }
+        Nil & get_mutable_nil() { return nil; }
+        void set_nil(const Nil & value) { this->nil = value; }
+
+        const No & get_no() const { return no; }
+        No & get_mutable_no() { return no; }
+        void set_no(const No & value) { this->no = value; }
+
         const NoSuchMethod & get_no_such_method() const { return no_such_method; }
         NoSuchMethod & get_mutable_no_such_method() { return no_such_method; }
         void set_no_such_method(const NoSuchMethod & value) { this->no_such_method = value; }
@@ -4962,14 +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; }
     };
 
     class KSerializer {
@@ -5308,6 +5289,34 @@ 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;
@@ -5840,48 +5849,6 @@ namespace quicktype {
         void set_unmarshal_json(const int64_t & value) { this->unmarshal_json = value; }
     };
 
-    class Unowned {
-        public:
-        Unowned() = default;
-        virtual ~Unowned() = default;
-
-        private:
-        int64_t unowned;
-
-        public:
-        const int64_t & get_unowned() const { return unowned; }
-        int64_t & get_mutable_unowned() { return unowned; }
-        void set_unowned(const int64_t & value) { this->unowned = value; }
-    };
-
-    class Unsafe {
-        public:
-        Unsafe() = default;
-        virtual ~Unsafe() = default;
-
-        private:
-        int64_t unsafe;
-
-        public:
-        const int64_t & get_unsafe() const { return unsafe; }
-        int64_t & get_mutable_unsafe() { return unsafe; }
-        void set_unsafe(const int64_t & value) { this->unsafe = value; }
-    };
-
-    class UseSerializers {
-        public:
-        UseSerializers() = default;
-        virtual ~UseSerializers() = default;
-
-        private:
-        int64_t use_serializers;
-
-        public:
-        const int64_t & get_use_serializers() const { return use_serializers; }
-        int64_t & get_mutable_use_serializers() { return use_serializers; }
-        void set_use_serializers(const int64_t & value) { this->use_serializers = value; }
-    };
-
     class Obj5 {
         public:
         Obj5() = default;
@@ -5913,6 +5880,8 @@ namespace quicktype {
         Union obj5_union;
         PrimitiveKind primitive_kind;
         TrueClass purple_true;
+        Sealed sealed;
+        Sel sel;
         Select select;
         Self self;
         Sendable sendable;
@@ -5951,9 +5920,6 @@ namespace quicktype {
         Unchecked unchecked;
         Undefined undefined;
         UnmarshalJson unmarshal_json;
-        Unowned unowned;
-        Unsafe unsafe;
-        UseSerializers use_serializers;
 
         public:
         const int64_t & get_dummy() const { return dummy; }
@@ -6056,6 +6022,14 @@ 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; }
@@ -6207,18 +6181,6 @@ namespace quicktype {
         const UnmarshalJson & get_unmarshal_json() const { return unmarshal_json; }
         UnmarshalJson & get_mutable_unmarshal_json() { return unmarshal_json; }
         void set_unmarshal_json(const UnmarshalJson & value) { this->unmarshal_json = value; }
-
-        const Unowned & get_unowned() const { return unowned; }
-        Unowned & get_mutable_unowned() { return unowned; }
-        void set_unowned(const Unowned & value) { this->unowned = value; }
-
-        const Unsafe & get_unsafe() const { return unsafe; }
-        Unsafe & get_mutable_unsafe() { return unsafe; }
-        void set_unsafe(const Unsafe & value) { this->unsafe = value; }
-
-        const 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; }
     };
 
     class Unsigned {
@@ -6347,6 +6309,48 @@ namespace quicktype {
         void set_xor_eq_xor_eq(const int64_t & value) { this->xor_eq_xor_eq = value; }
     };
 
+    class Unowned {
+        public:
+        Unowned() = default;
+        virtual ~Unowned() = default;
+
+        private:
+        int64_t unowned;
+
+        public:
+        const int64_t & get_unowned() const { return unowned; }
+        int64_t & get_mutable_unowned() { return unowned; }
+        void set_unowned(const int64_t & value) { this->unowned = value; }
+    };
+
+    class Unsafe {
+        public:
+        Unsafe() = default;
+        virtual ~Unsafe() = default;
+
+        private:
+        int64_t unsafe;
+
+        public:
+        const int64_t & get_unsafe() const { return unsafe; }
+        int64_t & get_mutable_unsafe() { return unsafe; }
+        void set_unsafe(const int64_t & value) { this->unsafe = value; }
+    };
+
+    class UseSerializers {
+        public:
+        UseSerializers() = default;
+        virtual ~UseSerializers() = default;
+
+        private:
+        int64_t use_serializers;
+
+        public:
+        const int64_t & get_use_serializers() const { return use_serializers; }
+        int64_t & get_mutable_use_serializers() { return use_serializers; }
+        void set_use_serializers(const int64_t & value) { this->use_serializers = value; }
+    };
+
     class Ushort {
         public:
         Ushort() = default;
@@ -6517,6 +6521,9 @@ namespace quicktype {
         While obj6_while;
         Xor obj6_xor;
         XorEq obj6_xor_eq;
+        Unowned unowned;
+        Unsafe unsafe;
+        UseSerializers use_serializers;
         Ushort ushort;
         Utf8JsonReader utf8_json_reader;
         Utf8JsonWriter utf8_json_writer;
@@ -6570,6 +6577,18 @@ namespace quicktype {
         XorEq & get_mutable_obj6_xor_eq() { return obj6_xor_eq; }
         void set_obj6_xor_eq(const XorEq & value) { this->obj6_xor_eq = value; }
 
+        const Unowned & get_unowned() const { return unowned; }
+        Unowned & get_mutable_unowned() { return unowned; }
+        void set_unowned(const Unowned & value) { this->unowned = value; }
+
+        const Unsafe & get_unsafe() const { return unsafe; }
+        Unsafe & get_mutable_unsafe() { return unsafe; }
+        void set_unsafe(const Unsafe & value) { this->unsafe = value; }
+
+        const 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; }
@@ -7189,6 +7208,9 @@ namespace quicktype {
     void from_json(const json & j, Lock & x);
     void to_json(json & j, const Lock & x);
 
+    void from_json(const json & j, MakeDictEncoder & x);
+    void to_json(json & j, const MakeDictEncoder & x);
+
     void from_json(const json & j, Map & x);
     void to_json(json & j, const Map & x);
 
@@ -7210,12 +7232,6 @@ namespace quicktype {
     void from_json(const json & j, Newtonsoft & x);
     void to_json(json & j, const Newtonsoft & x);
 
-    void from_json(const json & j, Nil & x);
-    void to_json(json & j, const Nil & x);
-
-    void from_json(const json & j, No & x);
-    void to_json(json & j, const No & x);
-
     void from_json(const json & j, Goto & x);
     void to_json(json & j, const Goto & x);
 
@@ -7249,6 +7265,12 @@ namespace quicktype {
     void from_json(const json & j, Obj3 & x);
     void to_json(json & j, const Obj3 & x);
 
+    void from_json(const json & j, Nil & x);
+    void to_json(json & j, const Nil & x);
+
+    void from_json(const json & j, No & x);
+    void to_json(json & j, const No & x);
+
     void from_json(const json & j, NoSuchMethod & x);
     void to_json(json & j, const NoSuchMethod & x);
 
@@ -7435,12 +7457,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, Obj4 & x);
     void to_json(json & j, const Obj4 & x);
 
@@ -7516,6 +7532,12 @@ namespace quicktype {
     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);
 
@@ -7630,15 +7652,6 @@ namespace quicktype {
     void from_json(const json & j, UnmarshalJson & x);
     void to_json(json & j, const UnmarshalJson & x);
 
-    void from_json(const json & j, Unowned & x);
-    void to_json(json & j, const Unowned & x);
-
-    void from_json(const json & j, Unsafe & x);
-    void to_json(json & j, const Unsafe & x);
-
-    void from_json(const json & j, UseSerializers & x);
-    void to_json(json & j, const UseSerializers & x);
-
     void from_json(const json & j, Obj5 & x);
     void to_json(json & j, const Obj5 & x);
 
@@ -7669,6 +7682,15 @@ namespace quicktype {
     void from_json(const json & j, XorEq & x);
     void to_json(json & j, const XorEq & x);
 
+    void from_json(const json & j, Unowned & x);
+    void to_json(json & j, const Unowned & x);
+
+    void from_json(const json & j, Unsafe & x);
+    void to_json(json & j, const Unsafe & x);
+
+    void from_json(const json & j, 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);
 
@@ -9901,6 +9923,17 @@ namespace quicktype {
         j["lock"] = x.get_lock();
     }
 
+    inline void from_json(const json & j, MakeDictEncoder& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("makeDictEncoder") != j.end() && !j.at("makeDictEncoder").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_make_dict_encoder(j.at("makeDictEncoder").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const MakeDictEncoder & x) {
+        j = json::object();
+        j["makeDictEncoder"] = x.get_make_dict_encoder();
+    }
+
     inline void from_json(const json & j, Map& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("map") != j.end() && !j.at("map").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -9978,28 +10011,6 @@ namespace quicktype {
         j["newtonsoft"] = x.get_newtonsoft();
     }
 
-    inline void from_json(const json & j, Nil& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("nil") != j.end() && !j.at("nil").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_nil(j.at("nil").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Nil & x) {
-        j = json::object();
-        j["nil"] = x.get_nil();
-    }
-
-    inline void from_json(const json & j, No& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("NO") != j.end() && !j.at("NO").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_no(j.at("NO").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const No & x) {
-        j = json::object();
-        j["NO"] = x.get_no();
-    }
-
     inline void from_json(const json & j, Goto& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("goto") != j.end() && !j.at("goto").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10160,6 +10171,7 @@ namespace quicktype {
         x.set_list(j.at("list").get<List>());
         x.set_locale(j.at("Locale").get<Locale>());
         x.set_lock(j.at("lock").get<Lock>());
+        x.set_make_dict_encoder(j.at("makeDictEncoder").get<MakeDictEncoder>());
         x.set_map(j.at("map").get<Map>());
         x.set_map_entry(j.at("MapEntry").get<MapEntry>());
         x.set_marshal_json(j.at("MarshalJSON").get<MarshalJson>());
@@ -10167,8 +10179,6 @@ namespace quicktype {
         x.set_mutating(j.at("mutating").get<Mutating>());
         x.set_native(j.at("native").get<Native>());
         x.set_newtonsoft(j.at("newtonsoft").get<Newtonsoft>());
-        x.set_nil(j.at("nil").get<Nil>());
-        x.set_no(j.at("NO").get<No>());
         x.set_obj3_goto(j.at("goto").get<Goto>());
         x.set_obj3_if(j.at("if").get<If>());
         x.set_obj3_import(j.at("import").get<Import>());
@@ -10230,6 +10240,7 @@ namespace quicktype {
         j["list"] = x.get_list();
         j["Locale"] = x.get_locale();
         j["lock"] = x.get_lock();
+        j["makeDictEncoder"] = x.get_make_dict_encoder();
         j["map"] = x.get_map();
         j["MapEntry"] = x.get_map_entry();
         j["MarshalJSON"] = x.get_marshal_json();
@@ -10237,8 +10248,6 @@ namespace quicktype {
         j["mutating"] = x.get_mutating();
         j["native"] = x.get_native();
         j["newtonsoft"] = x.get_newtonsoft();
-        j["nil"] = x.get_nil();
-        j["NO"] = x.get_no();
         j["goto"] = x.get_obj3_goto();
         j["if"] = x.get_obj3_if();
         j["import"] = x.get_obj3_import();
@@ -10251,6 +10260,28 @@ namespace quicktype {
         j["new"] = x.get_obj3_new();
     }
 
+    inline void from_json(const json & j, Nil& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("nil") != j.end() && !j.at("nil").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_nil(j.at("nil").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Nil & x) {
+        j = json::object();
+        j["nil"] = x.get_nil();
+    }
+
+    inline void from_json(const json & j, No& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("NO") != j.end() && !j.at("NO").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_no(j.at("NO").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const No & x) {
+        j = json::object();
+        j["NO"] = x.get_no();
+    }
+
     inline void from_json(const json & j, NoSuchMethod& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("noSuchMethod") != j.end() && !j.at("noSuchMethod").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10933,32 +10964,12 @@ 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, Obj4& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("dummy") != j.end() && !j.at("dummy").is_number_integer()) throw std::runtime_error("Expected integer");
         x.set_dummy(j.at("dummy").get<int64_t>());
+        x.set_nil(j.at("nil").get<Nil>());
+        x.set_no(j.at("NO").get<No>());
         x.set_no_such_method(j.at("noSuchMethod").get<NoSuchMethod>());
         x.set_nonatomic(j.at("nonatomic").get<Nonatomic>());
         x.set_none(j.at("None").get<None>());
@@ -11021,13 +11032,13 @@ 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>());
     }
 
     inline void to_json(json & j, const Obj4 & x) {
         j = json::object();
         j["dummy"] = x.get_dummy();
+        j["nil"] = x.get_nil();
+        j["NO"] = x.get_no();
         j["noSuchMethod"] = x.get_no_such_method();
         j["nonatomic"] = x.get_nonatomic();
         j["None"] = x.get_none();
@@ -11090,8 +11101,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();
     }
 
     inline void from_json(const json & j, KSerializer& x) {
@@ -11358,6 +11367,28 @@ 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");
@@ -11776,39 +11807,6 @@ namespace quicktype {
         j["UnmarshalJSON"] = x.get_unmarshal_json();
     }
 
-    inline void from_json(const json & j, Unowned& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("unowned") != j.end() && !j.at("unowned").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_unowned(j.at("unowned").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Unowned & x) {
-        j = json::object();
-        j["unowned"] = x.get_unowned();
-    }
-
-    inline void from_json(const json & j, Unsafe& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("unsafe") != j.end() && !j.at("unsafe").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_unsafe(j.at("unsafe").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Unsafe & x) {
-        j = json::object();
-        j["unsafe"] = x.get_unsafe();
-    }
-
-    inline void from_json(const json & j, 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");
-        x.set_use_serializers(j.at("UseSerializers").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const UseSerializers & x) {
-        j = json::object();
-        j["UseSerializers"] = x.get_use_serializers();
-    }
-
     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");
@@ -11837,6 +11835,8 @@ namespace quicktype {
         x.set_obj5_union(j.at("union").get<Union>());
         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>());
@@ -11875,9 +11875,6 @@ namespace quicktype {
         x.set_unchecked(j.at("unchecked").get<Unchecked>());
         x.set_undefined(j.at("undefined").get<Undefined>());
         x.set_unmarshal_json(j.at("UnmarshalJSON").get<UnmarshalJson>());
-        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>());
     }
 
     inline void to_json(json & j, const Obj5 & x) {
@@ -11907,6 +11904,8 @@ namespace quicktype {
         j["union"] = x.get_obj5_union();
         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();
@@ -11945,9 +11944,6 @@ namespace quicktype {
         j["unchecked"] = x.get_unchecked();
         j["undefined"] = x.get_undefined();
         j["UnmarshalJSON"] = x.get_unmarshal_json();
-        j["unowned"] = x.get_unowned();
-        j["unsafe"] = x.get_unsafe();
-        j["UseSerializers"] = x.get_use_serializers();
     }
 
     inline void from_json(const json & j, Unsigned& x) {
@@ -12049,6 +12045,39 @@ namespace quicktype {
         j["xor_eq"] = x.get_xor_eq_xor_eq();
     }
 
+    inline void from_json(const json & j, Unowned& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("unowned") != j.end() && !j.at("unowned").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_unowned(j.at("unowned").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Unowned & x) {
+        j = json::object();
+        j["unowned"] = x.get_unowned();
+    }
+
+    inline void from_json(const json & j, Unsafe& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("unsafe") != j.end() && !j.at("unsafe").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_unsafe(j.at("unsafe").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Unsafe & x) {
+        j = json::object();
+        j["unsafe"] = x.get_unsafe();
+    }
+
+    inline void from_json(const json & j, 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");
+        x.set_use_serializers(j.at("UseSerializers").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const UseSerializers & x) {
+        j = json::object();
+        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");
@@ -12183,6 +12212,9 @@ 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_unowned(j.at("unowned").get<Unowned>());
+        x.set_unsafe(j.at("unsafe").get<Unsafe>());
+        x.set_use_serializers(j.at("UseSerializers").get<UseSerializers>());
         x.set_ushort(j.at("ushort").get<Ushort>());
         x.set_utf8_json_reader(j.at("Utf8JsonReader").get<Utf8JsonReader>());
         x.set_utf8_json_writer(j.at("Utf8JsonWriter").get<Utf8JsonWriter>());
@@ -12208,6 +12240,9 @@ namespace quicktype {
         j["while"] = x.get_obj6_while();
         j["xor"] = x.get_obj6_xor();
         j["xor_eq"] = x.get_obj6_xor_eq();
+        j["unowned"] = x.get_unowned();
+        j["unsafe"] = x.get_unsafe();
+        j["UseSerializers"] = x.get_use_serializers();
         j["ushort"] = x.get_ushort();
         j["Utf8JsonReader"] = x.get_utf8_json_reader();
         j["Utf8JsonWriter"] = x.get_utf8_json_writer();
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 a6d8203..64d6331 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
@@ -1255,6 +1255,9 @@ class Obj3
 
   property long : Long
 
+  @[JSON::Field(key: "makeDictEncoder")]
+  property make_dict_encoder : MakeDictEncoder
+
   property map : Map
 
   @[JSON::Field(key: "MapEntry")]
@@ -1277,9 +1280,6 @@ class Obj3
 
   property newtonsoft : Newtonsoft
 
-  @[JSON::Field(key: "NO")]
-  property no : No
-
   @[JSON::Field(key: "if")]
   property obj3_if : If
 
@@ -1288,9 +1288,6 @@ class Obj3
 
   @[JSON::Field(key: "module")]
   property obj3_module : Module
-
-  @[JSON::Field(key: "nil")]
-  property obj3_nil : NilClass
 end
 
 class Goto
@@ -1611,6 +1608,13 @@ class Long
   property long : Int64
 end
 
+class MakeDictEncoder
+  include JSON::Serializable
+
+  @[JSON::Field(key: "makeDictEncoder")]
+  property make_dict_encoder : Int64
+end
+
 class Map
   include JSON::Serializable
 
@@ -1673,13 +1677,6 @@ class Newtonsoft
   property newtonsoft : Int64
 end
 
-class No
-  include JSON::Serializable
-
-  @[JSON::Field(key: "NO")]
-  property no : Int64
-end
-
 class If
   include JSON::Serializable
 
@@ -1701,18 +1698,14 @@ class Module
   property module_module : Int64
 end
 
-class NilClass
-  include JSON::Serializable
-
-  @[JSON::Field(key: "nil")]
-  property nil_nil : Int64
-end
-
 class Obj4
   include JSON::Serializable
 
   property dummy : Int64
 
+  @[JSON::Field(key: "NO")]
+  property no : No
+
   @[JSON::Field(key: "noSuchMethod")]
   property no_such_method : NoSuchMethod
 
@@ -1747,6 +1740,9 @@ class Obj4
 
   property number : NumberClass
 
+  @[JSON::Field(key: "nil")]
+  property obj4_nil : NilClass
+
   @[JSON::Field(key: "none")]
   property obj4_none : NoneClass
 
@@ -1856,11 +1852,13 @@ class Obj4
   property s : S
 
   property sbyte : Sbyte
+end
 
-  property sealed : Sealed
+class No
+  include JSON::Serializable
 
-  @[JSON::Field(key: "SEL")]
-  property sel : Sel
+  @[JSON::Field(key: "NO")]
+  property no : Int64
 end
 
 class NoSuchMethod
@@ -1953,6 +1951,13 @@ class NumberClass
   property number : Int64
 end
 
+class NilClass
+  include JSON::Serializable
+
+  @[JSON::Field(key: "nil")]
+  property nil_nil : Int64
+end
+
 class NoneClass
   include JSON::Serializable
 
@@ -2252,19 +2257,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
 
@@ -2318,6 +2310,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
 
@@ -2423,13 +2420,6 @@ class Obj5
 
   @[JSON::Field(key: "UnmarshalJSON")]
   property unmarshal_json : UnmarshalJson
-
-  property unowned : Unowned
-
-  property unsafe : Unsafe
-
-  @[JSON::Field(key: "UseSerializers")]
-  property use_serializers : UseSerializers
 end
 
 class KSerializer
@@ -2544,6 +2534,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
 
@@ -2834,25 +2837,6 @@ class UnmarshalJson
   property unmarshal_json : Int64
 end
 
-class Unowned
-  include JSON::Serializable
-
-  property unowned : Int64
-end
-
-class Unsafe
-  include JSON::Serializable
-
-  property unsafe : Int64
-end
-
-class UseSerializers
-  include JSON::Serializable
-
-  @[JSON::Field(key: "UseSerializers")]
-  property use_serializers : Int64
-end
-
 class Obj6
   include JSON::Serializable
 
@@ -2867,8 +2851,15 @@ class Obj6
   @[JSON::Field(key: "yield")]
   property obj6_yield : Yield
 
+  property unowned : Unowned
+
+  property unsafe : Unsafe
+
   property unsigned : Unsigned
 
+  @[JSON::Field(key: "UseSerializers")]
+  property use_serializers : UseSerializers
+
   property ushort : Ushort
 
   property using : Using
@@ -2928,12 +2919,31 @@ class Yield
   property yield_yield : Int64
 end
 
+class Unowned
+  include JSON::Serializable
+
+  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
+
+  @[JSON::Field(key: "UseSerializers")]
+  property use_serializers : Int64
+end
+
 class Ushort
   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 2a31669..9f198cd 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
@@ -1372,6 +1372,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.Always)]
         public Long Long { get; set; }
 
+        [JsonProperty("makeDictEncoder", Required = Required.Always)]
+        public MakeDictEncoder MakeDictEncoder { get; set; }
+
         [JsonProperty("map", Required = Required.Always)]
         public Map Map { get; set; }
 
@@ -1404,12 +1407,6 @@ namespace QuickType
 
         [JsonProperty("newtonsoft", Required = Required.Always)]
         public NewtonsoftClass Newtonsoft { get; set; }
-
-        [JsonProperty("nil", Required = Required.Always)]
-        public Nil Nil { get; set; }
-
-        [JsonProperty("NO", Required = Required.Always)]
-        public No No { get; set; }
     }
 
     public partial class Goto
@@ -1724,6 +1721,12 @@ namespace QuickType
         public long LongLong { get; set; }
     }
 
+    public partial class MakeDictEncoder
+    {
+        [JsonProperty("makeDictEncoder", Required = Required.Always)]
+        public long MakeDictEncoderMakeDictEncoder { get; set; }
+    }
+
     public partial class Map
     {
         [JsonProperty("map", Required = Required.Always)]
@@ -1790,23 +1793,17 @@ namespace QuickType
         public long Newtonsoft { get; set; }
     }
 
-    public partial class Nil
-    {
-        [JsonProperty("nil", Required = Required.Always)]
-        public long NilNil { get; set; }
-    }
-
-    public partial class No
-    {
-        [JsonProperty("NO", Required = Required.Always)]
-        public long NoNo { get; set; }
-    }
-
     public partial class Obj4
     {
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("nil", Required = Required.Always)]
+        public Nil Nil { get; set; }
+
+        [JsonProperty("NO", Required = Required.Always)]
+        public No No { get; set; }
+
         [JsonProperty("noSuchMethod", Required = Required.Always)]
         public NoSuchMethod NoSuchMethod { get; set; }
 
@@ -1992,12 +1989,18 @@ namespace QuickType
 
         [JsonProperty("sbyte", Required = Required.Always)]
         public Sbyte Sbyte { get; set; }
+    }
 
-        [JsonProperty("sealed", Required = Required.Always)]
-        public Sealed Sealed { get; set; }
+    public partial class Nil
+    {
+        [JsonProperty("nil", Required = Required.Always)]
+        public long NilNil { get; set; }
+    }
 
-        [JsonProperty("SEL", Required = Required.Always)]
-        public Sel Sel { get; set; }
+    public partial class No
+    {
+        [JsonProperty("NO", Required = Required.Always)]
+        public long NoNo { get; set; }
     }
 
     public partial class NoSuchMethod
@@ -2372,18 +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 Obj5
     {
         [JsonProperty("dummy", Required = Required.Always)]
@@ -2410,6 +2401,12 @@ 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; }
 
@@ -2574,15 +2571,6 @@ namespace QuickType
 
         [JsonProperty("UnmarshalJSON", Required = Required.Always)]
         public UnmarshalJson UnmarshalJson { get; set; }
-
-        [JsonProperty("unowned", Required = Required.Always)]
-        public Unowned Unowned { get; set; }
-
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonProperty("UseSerializers", Required = Required.Always)]
-        public UseSerializers UseSerializers { get; set; }
     }
 
     public partial class KSerializer
@@ -2627,6 +2615,18 @@ 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)]
@@ -2957,32 +2957,23 @@ namespace QuickType
         public long UnmarshalJsonUnmarshalJson { get; set; }
     }
 
-    public partial class Unowned
-    {
-        [JsonProperty("unowned", Required = Required.Always)]
-        public long UnownedUnowned { get; set; }
-    }
-
-    public partial class Unsafe
-    {
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public long UnsafeUnsafe { get; set; }
-    }
-
-    public partial class UseSerializers
-    {
-        [JsonProperty("UseSerializers", Required = Required.Always)]
-        public long UseSerializersUseSerializers { get; set; }
-    }
-
     public partial class Obj6
     {
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("unowned", Required = Required.Always)]
+        public Unowned Unowned { get; set; }
+
+        [JsonProperty("unsafe", Required = Required.Always)]
+        public Unsafe Unsafe { get; set; }
+
         [JsonProperty("unsigned", Required = Required.Always)]
         public Unsigned Unsigned { get; set; }
 
+        [JsonProperty("UseSerializers", Required = Required.Always)]
+        public UseSerializers UseSerializers { get; set; }
+
         [JsonProperty("ushort", Required = Required.Always)]
         public Ushort Ushort { get; set; }
 
@@ -3041,12 +3032,30 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial class Unowned
+    {
+        [JsonProperty("unowned", Required = Required.Always)]
+        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)]
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 6d22fb2..caebcda 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
@@ -1687,6 +1687,10 @@ namespace QuickType
         [JsonPropertyName("long")]
         public Long Long { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("makeDictEncoder")]
+        public MakeDictEncoder MakeDictEncoder { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("map")]
         public Map Map { get; set; }
@@ -1730,14 +1734,6 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("newtonsoft")]
         public Newtonsoft Newtonsoft { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("nil")]
-        public Nil Nil { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("NO")]
-        public No No { get; set; }
     }
 
     public partial class Goto
@@ -2104,6 +2100,13 @@ namespace QuickType
         public long LongLong { get; set; }
     }
 
+    public partial class MakeDictEncoder
+    {
+        [JsonRequired]
+        [JsonPropertyName("makeDictEncoder")]
+        public long MakeDictEncoderMakeDictEncoder { get; set; }
+    }
+
     public partial class Map
     {
         [JsonRequired]
@@ -2181,25 +2184,19 @@ namespace QuickType
         public long NewtonsoftNewtonsoft { get; set; }
     }
 
-    public partial class Nil
+    public partial class Obj4
     {
         [JsonRequired]
-        [JsonPropertyName("nil")]
-        public long NilNil { get; set; }
-    }
+        [JsonPropertyName("dummy")]
+        public long Dummy { get; set; }
 
-    public partial class No
-    {
         [JsonRequired]
-        [JsonPropertyName("NO")]
-        public long NoNo { get; set; }
-    }
+        [JsonPropertyName("nil")]
+        public Nil Nil { get; set; }
 
-    public partial class Obj4
-    {
         [JsonRequired]
-        [JsonPropertyName("dummy")]
-        public long Dummy { get; set; }
+        [JsonPropertyName("NO")]
+        public No No { get; set; }
 
         [JsonRequired]
         [JsonPropertyName("noSuchMethod")]
@@ -2448,14 +2445,20 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("sbyte")]
         public Sbyte Sbyte { get; set; }
+    }
 
+    public partial class Nil
+    {
         [JsonRequired]
-        [JsonPropertyName("sealed")]
-        public Sealed Sealed { get; set; }
+        [JsonPropertyName("nil")]
+        public long NilNil { get; set; }
+    }
 
+    public partial class No
+    {
         [JsonRequired]
-        [JsonPropertyName("SEL")]
-        public Sel Sel { get; set; }
+        [JsonPropertyName("NO")]
+        public long NoNo { get; set; }
     }
 
     public partial class NoSuchMethod
@@ -2892,20 +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 Obj5
     {
         [JsonRequired]
@@ -2940,6 +2929,14 @@ 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; }
@@ -3159,18 +3156,6 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("UnmarshalJSON")]
         public UnmarshalJson UnmarshalJson { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("unowned")]
-        public Unowned Unowned { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("unsafe")]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("UseSerializers")]
-        public UseSerializers UseSerializers { get; set; }
     }
 
     public partial class KSerializer
@@ -3222,6 +3207,20 @@ 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]
@@ -3607,37 +3606,28 @@ namespace QuickType
         public long UnmarshalJsonUnmarshalJson { get; set; }
     }
 
-    public partial class Unowned
-    {
-        [JsonRequired]
-        [JsonPropertyName("unowned")]
-        public long UnownedUnowned { get; set; }
-    }
-
-    public partial class Unsafe
+    public partial class Obj6
     {
         [JsonRequired]
-        [JsonPropertyName("unsafe")]
-        public long UnsafeUnsafe { get; set; }
-    }
+        [JsonPropertyName("dummy")]
+        public long Dummy { get; set; }
 
-    public partial class UseSerializers
-    {
         [JsonRequired]
-        [JsonPropertyName("UseSerializers")]
-        public long UseSerializersUseSerializers { get; set; }
-    }
+        [JsonPropertyName("unowned")]
+        public Unowned Unowned { get; set; }
 
-    public partial class Obj6
-    {
         [JsonRequired]
-        [JsonPropertyName("dummy")]
-        public long Dummy { get; set; }
+        [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; }
@@ -3715,6 +3705,20 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial class Unowned
+    {
+        [JsonRequired]
+        [JsonPropertyName("unowned")]
+        public long UnownedUnowned { get; set; }
+    }
+
+    public partial class Unsafe
+    {
+        [JsonRequired]
+        [JsonPropertyName("unsafe")]
+        public long UnsafeUnsafe { get; set; }
+    }
+
     public partial class Unsigned
     {
         [JsonRequired]
@@ -3722,6 +3726,13 @@ namespace QuickType
         public long UnsignedUnsigned { get; set; }
     }
 
+    public partial class UseSerializers
+    {
+        [JsonRequired]
+        [JsonPropertyName("UseSerializers")]
+        public long UseSerializersUseSerializers { get; set; }
+    }
+
     public partial class Ushort
     {
         [JsonRequired]
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 59112bb..16ba756 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
@@ -1372,6 +1372,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.Always)]
         public Long Long { get; set; }
 
+        [JsonProperty("makeDictEncoder", Required = Required.Always)]
+        public MakeDictEncoder MakeDictEncoder { get; set; }
+
         [JsonProperty("map", Required = Required.Always)]
         public Map Map { get; set; }
 
@@ -1404,12 +1407,6 @@ namespace QuickType
 
         [JsonProperty("newtonsoft", Required = Required.Always)]
         public NewtonsoftClass Newtonsoft { get; set; }
-
-        [JsonProperty("nil", Required = Required.Always)]
-        public Nil Nil { get; set; }
-
-        [JsonProperty("NO", Required = Required.Always)]
-        public No No { get; set; }
     }
 
     public partial record Goto
@@ -1724,6 +1721,12 @@ namespace QuickType
         public long LongLong { get; set; }
     }
 
+    public partial record MakeDictEncoder
+    {
+        [JsonProperty("makeDictEncoder", Required = Required.Always)]
+        public long MakeDictEncoderMakeDictEncoder { get; set; }
+    }
+
     public partial record Map
     {
         [JsonProperty("map", Required = Required.Always)]
@@ -1790,23 +1793,17 @@ namespace QuickType
         public long Newtonsoft { get; set; }
     }
 
-    public partial record Nil
-    {
-        [JsonProperty("nil", Required = Required.Always)]
-        public long NilNil { get; set; }
-    }
-
-    public partial record No
-    {
-        [JsonProperty("NO", Required = Required.Always)]
-        public long NoNo { get; set; }
-    }
-
     public partial record Obj4
     {
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("nil", Required = Required.Always)]
+        public Nil Nil { get; set; }
+
+        [JsonProperty("NO", Required = Required.Always)]
+        public No No { get; set; }
+
         [JsonProperty("noSuchMethod", Required = Required.Always)]
         public NoSuchMethod NoSuchMethod { get; set; }
 
@@ -1992,12 +1989,18 @@ namespace QuickType
 
         [JsonProperty("sbyte", Required = Required.Always)]
         public Sbyte Sbyte { get; set; }
+    }
 
-        [JsonProperty("sealed", Required = Required.Always)]
-        public Sealed Sealed { get; set; }
+    public partial record Nil
+    {
+        [JsonProperty("nil", Required = Required.Always)]
+        public long NilNil { get; set; }
+    }
 
-        [JsonProperty("SEL", Required = Required.Always)]
-        public Sel Sel { get; set; }
+    public partial record No
+    {
+        [JsonProperty("NO", Required = Required.Always)]
+        public long NoNo { get; set; }
     }
 
     public partial record NoSuchMethod
@@ -2372,18 +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 Obj5
     {
         [JsonProperty("dummy", Required = Required.Always)]
@@ -2410,6 +2401,12 @@ 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; }
 
@@ -2574,15 +2571,6 @@ namespace QuickType
 
         [JsonProperty("UnmarshalJSON", Required = Required.Always)]
         public UnmarshalJson UnmarshalJson { get; set; }
-
-        [JsonProperty("unowned", Required = Required.Always)]
-        public Unowned Unowned { get; set; }
-
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonProperty("UseSerializers", Required = Required.Always)]
-        public UseSerializers UseSerializers { get; set; }
     }
 
     public partial record KSerializer
@@ -2627,6 +2615,18 @@ 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)]
@@ -2957,32 +2957,23 @@ namespace QuickType
         public long UnmarshalJsonUnmarshalJson { get; set; }
     }
 
-    public partial record Unowned
-    {
-        [JsonProperty("unowned", Required = Required.Always)]
-        public long UnownedUnowned { get; set; }
-    }
-
-    public partial record Unsafe
-    {
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public long UnsafeUnsafe { get; set; }
-    }
-
-    public partial record UseSerializers
-    {
-        [JsonProperty("UseSerializers", Required = Required.Always)]
-        public long UseSerializersUseSerializers { get; set; }
-    }
-
     public partial record Obj6
     {
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("unowned", Required = Required.Always)]
+        public Unowned Unowned { get; set; }
+
+        [JsonProperty("unsafe", Required = Required.Always)]
+        public Unsafe Unsafe { get; set; }
+
         [JsonProperty("unsigned", Required = Required.Always)]
         public Unsigned Unsigned { get; set; }
 
+        [JsonProperty("UseSerializers", Required = Required.Always)]
+        public UseSerializers UseSerializers { get; set; }
+
         [JsonProperty("ushort", Required = Required.Always)]
         public Ushort Ushort { get; set; }
 
@@ -3041,12 +3032,30 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial record Unowned
+    {
+        [JsonProperty("unowned", Required = Required.Always)]
+        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)]
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 5a551bc..2b3695a 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
@@ -2696,6 +2696,7 @@ class Obj3 {
     final Locale locale;
     final Lock lock;
     final Long long;
+    final MakeDictEncoder makeDictEncoder;
     final MapClass map;
     final MapEntryClass mapEntry;
     final MarshalJson marshalJson;
@@ -2706,8 +2707,6 @@ class Obj3 {
     final Namespace namespace;
     final Native native;
     final Newtonsoft newtonsoft;
-    final Nil nil;
-    final No no;
     final HashCode obj3HashCode;
     final If obj3If;
     final Implements obj3Implements;
@@ -2764,6 +2763,7 @@ class Obj3 {
         required this.locale,
         required this.lock,
         required this.long,
+        required this.makeDictEncoder,
         required this.map,
         required this.mapEntry,
         required this.marshalJson,
@@ -2774,8 +2774,6 @@ class Obj3 {
         required this.namespace,
         required this.native,
         required this.newtonsoft,
-        required this.nil,
-        required this.no,
         required this.obj3HashCode,
         required this.obj3If,
         required this.obj3Implements,
@@ -2833,6 +2831,7 @@ class Obj3 {
         locale: Locale.fromJson(json["Locale"]),
         lock: Lock.fromJson(json["lock"]),
         long: Long.fromJson(json["long"]),
+        makeDictEncoder: MakeDictEncoder.fromJson(json["makeDictEncoder"]),
         map: MapClass.fromJson(json["map"]),
         mapEntry: MapEntryClass.fromJson(json["MapEntry"]),
         marshalJson: MarshalJson.fromJson(json["MarshalJSON"]),
@@ -2843,8 +2842,6 @@ class Obj3 {
         namespace: Namespace.fromJson(json["namespace"]),
         native: Native.fromJson(json["native"]),
         newtonsoft: Newtonsoft.fromJson(json["newtonsoft"]),
-        nil: Nil.fromJson(json["nil"]),
-        no: No.fromJson(json["NO"]),
         obj3HashCode: HashCode.fromJson(json["hashCode"]),
         obj3If: If.fromJson(json["if"]),
         obj3Implements: Implements.fromJson(json["implements"]),
@@ -2902,6 +2899,7 @@ class Obj3 {
         "Locale": locale.toJson(),
         "lock": lock.toJson(),
         "long": long.toJson(),
+        "makeDictEncoder": makeDictEncoder.toJson(),
         "map": map.toJson(),
         "MapEntry": mapEntry.toJson(),
         "MarshalJSON": marshalJson.toJson(),
@@ -2912,8 +2910,6 @@ class Obj3 {
         "namespace": namespace.toJson(),
         "native": native.toJson(),
         "newtonsoft": newtonsoft.toJson(),
-        "nil": nil.toJson(),
-        "NO": no.toJson(),
         "hashCode": obj3HashCode.toJson(),
         "if": obj3If.toJson(),
         "implements": obj3Implements.toJson(),
@@ -3630,6 +3626,22 @@ class Long {
     };
 }
 
+class MakeDictEncoder {
+    final int makeDictEncoder;
+
+    MakeDictEncoder({
+        required this.makeDictEncoder,
+    });
+
+    factory MakeDictEncoder.fromJson(Map<String, dynamic> json) => MakeDictEncoder(
+        makeDictEncoder: json["makeDictEncoder"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "makeDictEncoder": makeDictEncoder,
+    };
+}
+
 class MapClass {
     final int map;
 
@@ -3790,38 +3802,6 @@ class Newtonsoft {
     };
 }
 
-class Nil {
-    final int nil;
-
-    Nil({
-        required this.nil,
-    });
-
-    factory Nil.fromJson(Map<String, dynamic> json) => Nil(
-        nil: json["nil"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "nil": nil,
-    };
-}
-
-class No {
-    final int no;
-
-    No({
-        required this.no,
-    });
-
-    factory No.fromJson(Map<String, dynamic> json) => No(
-        no: json["NO"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "NO": no,
-    };
-}
-
 class HashCode {
     final int hashCodeHashCode;
 
@@ -3968,6 +3948,8 @@ class New {
 
 class Obj4 {
     final int dummy;
+    final Nil nil;
+    final No no;
     final Noexcept noexcept;
     final Nonatomic nonatomic;
     final None none;
@@ -4030,11 +4012,11 @@ class Obj4 {
     final Right right;
     final S s;
     final Sbyte sbyte;
-    final Sealed sealed;
-    final Sel sel;
 
     Obj4({
         required this.dummy,
+        required this.nil,
+        required this.no,
         required this.noexcept,
         required this.nonatomic,
         required this.none,
@@ -4097,12 +4079,12 @@ class Obj4 {
         required this.right,
         required this.s,
         required this.sbyte,
-        required this.sealed,
-        required this.sel,
     });
 
     factory Obj4.fromJson(Map<String, dynamic> json) => Obj4(
         dummy: json["dummy"],
+        nil: Nil.fromJson(json["nil"]),
+        no: No.fromJson(json["NO"]),
         noexcept: Noexcept.fromJson(json["noexcept"]),
         nonatomic: Nonatomic.fromJson(json["nonatomic"]),
         none: None.fromJson(json["None"]),
@@ -4165,12 +4147,12 @@ 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"]),
     );
 
     Map<String, dynamic> toJson() => {
         "dummy": dummy,
+        "nil": nil.toJson(),
+        "NO": no.toJson(),
         "noexcept": noexcept.toJson(),
         "nonatomic": nonatomic.toJson(),
         "None": none.toJson(),
@@ -4233,8 +4215,38 @@ class Obj4 {
         "right": right.toJson(),
         "s": s.toJson(),
         "sbyte": sbyte.toJson(),
-        "sealed": sealed.toJson(),
-        "SEL": sel.toJson(),
+    };
+}
+
+class Nil {
+    final int nil;
+
+    Nil({
+        required this.nil,
+    });
+
+    factory Nil.fromJson(Map<String, dynamic> json) => Nil(
+        nil: json["nil"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "nil": nil,
+    };
+}
+
+class No {
+    final int no;
+
+    No({
+        required this.no,
+    });
+
+    factory No.fromJson(Map<String, dynamic> json) => No(
+        no: json["NO"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "NO": no,
     };
 }
 
@@ -5230,38 +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 Obj5 {
     final int dummy;
     final KSerializer kSerializer;
@@ -5280,6 +5260,8 @@ 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;
@@ -5326,9 +5308,6 @@ class Obj5 {
     final Undefined undefined;
     final Union union;
     final UnmarshalJson unmarshalJson;
-    final Unowned unowned;
-    final Unsafe unsafe;
-    final UseSerializers useSerializers;
 
     Obj5({
         required this.dummy,
@@ -5348,6 +5327,8 @@ 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,
@@ -5394,9 +5375,6 @@ class Obj5 {
         required this.undefined,
         required this.union,
         required this.unmarshalJson,
-        required this.unowned,
-        required this.unsafe,
-        required this.useSerializers,
     });
 
     factory Obj5.fromJson(Map<String, dynamic> json) => Obj5(
@@ -5417,6 +5395,8 @@ 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"]),
@@ -5463,9 +5443,6 @@ class Obj5 {
         undefined: Undefined.fromJson(json["undefined"]),
         union: Union.fromJson(json["union"]),
         unmarshalJson: UnmarshalJson.fromJson(json["UnmarshalJSON"]),
-        unowned: Unowned.fromJson(json["unowned"]),
-        unsafe: Unsafe.fromJson(json["unsafe"]),
-        useSerializers: UseSerializers.fromJson(json["UseSerializers"]),
     );
 
     Map<String, dynamic> toJson() => {
@@ -5486,6 +5463,8 @@ 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(),
@@ -5532,9 +5511,6 @@ class Obj5 {
         "undefined": undefined.toJson(),
         "union": union.toJson(),
         "UnmarshalJSON": unmarshalJson.toJson(),
-        "unowned": unowned.toJson(),
-        "unsafe": unsafe.toJson(),
-        "UseSerializers": useSerializers.toJson(),
     };
 }
 
@@ -5794,6 +5770,38 @@ 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;
 
@@ -6530,54 +6538,6 @@ class UnmarshalJson {
     };
 }
 
-class Unowned {
-    final int unowned;
-
-    Unowned({
-        required this.unowned,
-    });
-
-    factory Unowned.fromJson(Map<String, dynamic> json) => Unowned(
-        unowned: json["unowned"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "unowned": 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 UseSerializers {
-    final int useSerializers;
-
-    UseSerializers({
-        required this.useSerializers,
-    });
-
-    factory UseSerializers.fromJson(Map<String, dynamic> json) => UseSerializers(
-        useSerializers: json["UseSerializers"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "UseSerializers": useSerializers,
-    };
-}
-
 class Obj6 {
     final int dummy;
     final Var obj6Var;
@@ -6585,7 +6545,10 @@ class Obj6 {
     final While obj6While;
     final With obj6With;
     final Yield obj6Yield;
+    final Unowned unowned;
+    final Unsafe unsafe;
     final Unsigned unsigned;
+    final UseSerializers useSerializers;
     final Ushort ushort;
     final Using using;
     final Utf8JsonReader utf8JsonReader;
@@ -6608,7 +6571,10 @@ class Obj6 {
         required this.obj6While,
         required this.obj6With,
         required this.obj6Yield,
+        required this.unowned,
+        required this.unsafe,
         required this.unsigned,
+        required this.useSerializers,
         required this.ushort,
         required this.using,
         required this.utf8JsonReader,
@@ -6632,7 +6598,10 @@ class Obj6 {
         obj6While: While.fromJson(json["while"]),
         obj6With: With.fromJson(json["with"]),
         obj6Yield: Yield.fromJson(json["yield"]),
+        unowned: Unowned.fromJson(json["unowned"]),
+        unsafe: Unsafe.fromJson(json["unsafe"]),
         unsigned: Unsigned.fromJson(json["unsigned"]),
+        useSerializers: UseSerializers.fromJson(json["UseSerializers"]),
         ushort: Ushort.fromJson(json["ushort"]),
         using: Using.fromJson(json["using"]),
         utf8JsonReader: Utf8JsonReader.fromJson(json["Utf8JsonReader"]),
@@ -6656,7 +6625,10 @@ class Obj6 {
         "while": obj6While.toJson(),
         "with": obj6With.toJson(),
         "yield": obj6Yield.toJson(),
+        "unowned": unowned.toJson(),
+        "unsafe": unsafe.toJson(),
         "unsigned": unsigned.toJson(),
+        "UseSerializers": useSerializers.toJson(),
         "ushort": ushort.toJson(),
         "using": using.toJson(),
         "Utf8JsonReader": utf8JsonReader.toJson(),
@@ -6754,6 +6726,38 @@ class Yield {
     };
 }
 
+class Unowned {
+    final int unowned;
+
+    Unowned({
+        required this.unowned,
+    });
+
+    factory Unowned.fromJson(Map<String, dynamic> json) => Unowned(
+        unowned: json["unowned"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "unowned": 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;
 
@@ -6770,6 +6774,22 @@ class Unsigned {
     };
 }
 
+class UseSerializers {
+    final int useSerializers;
+
+    UseSerializers({
+        required this.useSerializers,
+    });
+
+    factory UseSerializers.fromJson(Map<String, dynamic> json) => UseSerializers(
+        useSerializers: json["UseSerializers"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "UseSerializers": useSerializers,
+    };
+}
+
 class Ushort {
     final int ushort;
 
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 9f0ab3e..de39a59 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
@@ -7455,6 +7455,45 @@ defmodule Long do
   end
 end
 
+defmodule MakeDictEncoder do
+  @enforce_keys [:make_dict_encoder]
+  defstruct [:make_dict_encoder]
+
+  @type t :: %__MODULE__{
+          make_dict_encoder: integer()
+        }
+
+  def decode_make_dict_encoder(value) when is_integer(value), do: value
+  def decode_make_dict_encoder(_), do: {:error, "Unexpected type when decoding MakeDictEncoder.make_dict_encoder"}
+
+  def encode_make_dict_encoder(value) when is_integer(value), do: value
+  def encode_make_dict_encoder(_), do: {:error, "Unexpected type when encoding MakeDictEncoder.make_dict_encoder"}
+
+  def from_map(m) do
+    %MakeDictEncoder{
+      make_dict_encoder: decode_make_dict_encoder(m["makeDictEncoder"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "makeDictEncoder" => struct.make_dict_encoder,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule MapClass do
   @enforce_keys [:map]
   defstruct [:map]
@@ -7884,45 +7923,6 @@ defmodule Newtonsoft do
   end
 end
 
-defmodule No do
-  @enforce_keys [:no]
-  defstruct [:no]
-
-  @type t :: %__MODULE__{
-          no: integer()
-        }
-
-  def decode_no(value) when is_integer(value), do: value
-  def decode_no(_), do: {:error, "Unexpected type when decoding No.no"}
-
-  def encode_no(value) when is_integer(value), do: value
-  def encode_no(_), do: {:error, "Unexpected type when encoding No.no"}
-
-  def from_map(m) do
-    %No{
-      no: decode_no(m["NO"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "NO" => struct.no,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
 defmodule ImportClass do
   @enforce_keys [:import_import]
   defstruct [:import_import]
@@ -8001,48 +8001,9 @@ defmodule InClass do
   end
 end
 
-defmodule NilClass do
-  @enforce_keys [:nil_nil]
-  defstruct [:nil_nil]
-
-  @type t :: %__MODULE__{
-          nil_nil: integer()
-        }
-
-  def decode_nil_nil(value) when is_integer(value), do: value
-  def decode_nil_nil(_), do: {:error, "Unexpected type when decoding NilClass.nil_nil"}
-
-  def encode_nil_nil(value) when is_integer(value), do: value
-  def encode_nil_nil(_), do: {:error, "Unexpected type when encoding NilClass.nil_nil"}
-
-  def from_map(m) do
-    %NilClass{
-      nil_nil: decode_nil_nil(m["nil"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "nil" => struct.nil_nil,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
 defmodule Obj3 do
-  @enforce_keys [:dummy, :goto, :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, :marshal_json, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :no, :obj3_import, :obj3_in, :obj3_nil]
-  defstruct [:dummy, :goto, :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, :marshal_json, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :no, :obj3_import, :obj3_in, :obj3_nil]
+  @enforce_keys [:dummy, :goto, :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, :make_dict_encoder, :map, :map_entry, :marshal_json, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :obj3_import, :obj3_in]
+  defstruct [:dummy, :goto, :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, :make_dict_encoder, :map, :map_entry, :marshal_json, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :obj3_import, :obj3_in]
 
   @type t :: %__MODULE__{
           dummy: integer(),
@@ -8096,6 +8057,7 @@ defmodule Obj3 do
           locale: Locale.t(),
           lock: Lock.t(),
           long: Long.t(),
+          make_dict_encoder: MakeDictEncoder.t(),
           map: MapClass.t(),
           map_entry: MapEntry.t(),
           marshal_json: MarshalJSON.t(),
@@ -8107,10 +8069,8 @@ defmodule Obj3 do
           native: Native.t(),
           new: New.t(),
           newtonsoft: Newtonsoft.t(),
-          no: No.t(),
           obj3_import: ImportClass.t(),
-          obj3_in: InClass.t(),
-          obj3_nil: NilClass.t()
+          obj3_in: InClass.t()
         }
 
   def decode_dummy(value) when is_integer(value), do: value
@@ -8172,6 +8132,7 @@ defmodule Obj3 do
       locale: Locale.from_map(m["Locale"]),
       lock: Lock.from_map(m["lock"]),
       long: Long.from_map(m["long"]),
+      make_dict_encoder: MakeDictEncoder.from_map(m["makeDictEncoder"]),
       map: MapClass.from_map(m["map"]),
       map_entry: MapEntry.from_map(m["MapEntry"]),
       marshal_json: MarshalJSON.from_map(m["MarshalJSON"]),
@@ -8183,10 +8144,8 @@ defmodule Obj3 do
       native: Native.from_map(m["native"]),
       new: New.from_map(m["new"]),
       newtonsoft: Newtonsoft.from_map(m["newtonsoft"]),
-      no: No.from_map(m["NO"]),
       obj3_import: ImportClass.from_map(m["import"]),
       obj3_in: InClass.from_map(m["in"]),
-      obj3_nil: NilClass.from_map(m["nil"]),
     }
   end
 
@@ -8249,6 +8208,7 @@ defmodule Obj3 do
       "Locale" => Locale.to_map(struct.locale),
       "lock" => Lock.to_map(struct.lock),
       "long" => Long.to_map(struct.long),
+      "makeDictEncoder" => MakeDictEncoder.to_map(struct.make_dict_encoder),
       "map" => MapClass.to_map(struct.map),
       "MapEntry" => MapEntry.to_map(struct.map_entry),
       "MarshalJSON" => MarshalJSON.to_map(struct.marshal_json),
@@ -8260,10 +8220,47 @@ defmodule Obj3 do
       "native" => Native.to_map(struct.native),
       "new" => New.to_map(struct.new),
       "newtonsoft" => Newtonsoft.to_map(struct.newtonsoft),
-      "NO" => No.to_map(struct.no),
       "import" => ImportClass.to_map(struct.obj3_import),
       "in" => InClass.to_map(struct.obj3_in),
-      "nil" => NilClass.to_map(struct.obj3_nil),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule No do
+  @enforce_keys [:no]
+  defstruct [:no]
+
+  @type t :: %__MODULE__{
+          no: integer()
+        }
+
+  def decode_no(value) when is_integer(value), do: value
+  def decode_no(_), do: {:error, "Unexpected type when decoding No.no"}
+
+  def encode_no(value) when is_integer(value), do: value
+  def encode_no(_), do: {:error, "Unexpected type when encoding No.no"}
+
+  def from_map(m) do
+    %No{
+      no: decode_no(m["NO"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "NO" => struct.no,
     }
   end
 
@@ -8781,6 +8778,45 @@ defmodule Number do
   end
 end
 
+defmodule NilClass do
+  @enforce_keys [:nil_nil]
+  defstruct [:nil_nil]
+
+  @type t :: %__MODULE__{
+          nil_nil: integer()
+        }
+
+  def decode_nil_nil(value) when is_integer(value), do: value
+  def decode_nil_nil(_), do: {:error, "Unexpected type when decoding NilClass.nil_nil"}
+
+  def encode_nil_nil(value) when is_integer(value), do: value
+  def encode_nil_nil(_), do: {:error, "Unexpected type when encoding NilClass.nil_nil"}
+
+  def from_map(m) do
+    %NilClass{
+      nil_nil: decode_nil_nil(m["nil"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "nil" => struct.nil_nil,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule NoneClass do
   @enforce_keys [:none]
   defstruct [:none]
@@ -10692,90 +10728,13 @@ defmodule Sbyte 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 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, :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]
-  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, :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]
+  @enforce_keys [:dummy, :no, :no_such_method, :noexcept, :nonatomic, :none, :nonlocal, :nonmutating, :not_eq, :ns_error, :ns_object, :ns_string, :null, :nullptr, :number, :obj4_nil, :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]
+  defstruct [:dummy, :no, :no_such_method, :noexcept, :nonatomic, :none, :nonlocal, :nonmutating, :not_eq, :ns_error, :ns_object, :ns_string, :null, :nullptr, :number, :obj4_nil, :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]
 
   @type t :: %__MODULE__{
           dummy: integer(),
+          no: No.t(),
           no_such_method: NoSuchMethod.t(),
           noexcept: Noexcept.t(),
           nonatomic: Nonatomic.t(),
@@ -10789,6 +10748,7 @@ defmodule Obj4 do
           null: Null.t(),
           nullptr: Nullptr.t(),
           number: Number.t(),
+          obj4_nil: NilClass.t(),
           obj4_none: NoneClass.t(),
           obj4_not: NotClass.t(),
           obj4_null: NullClass.t(),
@@ -10837,9 +10797,7 @@ defmodule Obj4 do
           right: Right.t(),
           runtime_type: RuntimeType.t(),
           s: S.t(),
-          sbyte: Sbyte.t(),
-          sealed: Sealed.t(),
-          sel: Sel.t()
+          sbyte: Sbyte.t()
         }
 
   def decode_dummy(value) when is_integer(value), do: value
@@ -10851,6 +10809,7 @@ defmodule Obj4 do
   def from_map(m) do
     %Obj4{
       dummy: decode_dummy(m["dummy"]),
+      no: No.from_map(m["NO"]),
       no_such_method: NoSuchMethod.from_map(m["noSuchMethod"]),
       noexcept: Noexcept.from_map(m["noexcept"]),
       nonatomic: Nonatomic.from_map(m["nonatomic"]),
@@ -10864,6 +10823,7 @@ defmodule Obj4 do
       null: Null.from_map(m["NULL"]),
       nullptr: Nullptr.from_map(m["nullptr"]),
       number: Number.from_map(m["number"]),
+      obj4_nil: NilClass.from_map(m["nil"]),
       obj4_none: NoneClass.from_map(m["none"]),
       obj4_not: NotClass.from_map(m["not"]),
       obj4_null: NullClass.from_map(m["null"]),
@@ -10913,8 +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"]),
     }
   end
 
@@ -10927,6 +10885,7 @@ defmodule Obj4 do
   def to_map(struct) do
     %{
       "dummy" => struct.dummy,
+      "NO" => No.to_map(struct.no),
       "noSuchMethod" => NoSuchMethod.to_map(struct.no_such_method),
       "noexcept" => Noexcept.to_map(struct.noexcept),
       "nonatomic" => Nonatomic.to_map(struct.nonatomic),
@@ -10940,6 +10899,7 @@ defmodule Obj4 do
       "NULL" => Null.to_map(struct.null),
       "nullptr" => Nullptr.to_map(struct.nullptr),
       "number" => Number.to_map(struct.number),
+      "nil" => NilClass.to_map(struct.obj4_nil),
       "none" => NoneClass.to_map(struct.obj4_none),
       "not" => NotClass.to_map(struct.obj4_not),
       "null" => NullClass.to_map(struct.obj4_null),
@@ -10989,8 +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),
     }
   end
 
@@ -11196,6 +11154,84 @@ 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]
@@ -13419,126 +13455,9 @@ defmodule UnmarshalJSON do
   end
 end
 
-defmodule Unowned do
-  @enforce_keys [:unowned]
-  defstruct [:unowned]
-
-  @type t :: %__MODULE__{
-          unowned: integer()
-        }
-
-  def decode_unowned(value) when is_integer(value), do: value
-  def decode_unowned(_), do: {:error, "Unexpected type when decoding Unowned.unowned"}
-
-  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
-    %Unowned{
-      unowned: decode_unowned(m["unowned"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "unowned" => struct.unowned,
-    }
-  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 UseSerializers do
-  @enforce_keys [:use_serializers]
-  defstruct [:use_serializers]
-
-  @type t :: %__MODULE__{
-          use_serializers: 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 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
-    %UseSerializers{
-      use_serializers: decode_use_serializers(m["UseSerializers"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "UseSerializers" => struct.use_serializers,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
 defmodule Obj5 do
-  @enforce_keys [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :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_dict, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unmarshal_json, :unowned, :unsafe, :use_serializers]
-  defstruct [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :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_dict, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unmarshal_json, :unowned, :unsafe, :use_serializers]
+  @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_dict, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unmarshal_json]
+  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_dict, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unmarshal_json]
 
   @type t :: %__MODULE__{
           dummy: integer(),
@@ -13547,6 +13466,8 @@ 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(),
@@ -13603,10 +13524,7 @@ defmodule Obj5 do
           unchecked: Unchecked.t(),
           undefined: Undefined.t(),
           union: Union.t(),
-          unmarshal_json: UnmarshalJSON.t(),
-          unowned: Unowned.t(),
-          unsafe: Unsafe.t(),
-          use_serializers: UseSerializers.t()
+          unmarshal_json: UnmarshalJSON.t()
         }
 
   def decode_dummy(value) when is_integer(value), do: value
@@ -13623,6 +13541,8 @@ 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"]),
@@ -13680,9 +13600,6 @@ defmodule Obj5 do
       undefined: Undefined.from_map(m["undefined"]),
       union: Union.from_map(m["union"]),
       unmarshal_json: UnmarshalJSON.from_map(m["UnmarshalJSON"]),
-      unowned: Unowned.from_map(m["unowned"]),
-      unsafe: Unsafe.from_map(m["unsafe"]),
-      use_serializers: UseSerializers.from_map(m["UseSerializers"]),
     }
   end
 
@@ -13700,6 +13617,8 @@ 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),
@@ -13757,9 +13676,84 @@ defmodule Obj5 do
       "undefined" => Undefined.to_map(struct.undefined),
       "union" => Union.to_map(struct.union),
       "UnmarshalJSON" => UnmarshalJSON.to_map(struct.unmarshal_json),
-      "unowned" => Unowned.to_map(struct.unowned),
-      "unsafe" => Unsafe.to_map(struct.unsafe),
-      "UseSerializers" => UseSerializers.to_map(struct.use_serializers),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Unowned do
+  @enforce_keys [:unowned]
+  defstruct [:unowned]
+
+  @type t :: %__MODULE__{
+          unowned: integer()
+        }
+
+  def decode_unowned(value) when is_integer(value), do: value
+  def decode_unowned(_), do: {:error, "Unexpected type when decoding Unowned.unowned"}
+
+  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
+    %Unowned{
+      unowned: decode_unowned(m["unowned"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "unowned" => struct.unowned,
+    }
+  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
 
@@ -13809,6 +13803,45 @@ defmodule Unsigned do
   end
 end
 
+defmodule UseSerializers do
+  @enforce_keys [:use_serializers]
+  defstruct [:use_serializers]
+
+  @type t :: %__MODULE__{
+          use_serializers: 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 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
+    %UseSerializers{
+      use_serializers: decode_use_serializers(m["UseSerializers"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "UseSerializers" => struct.use_serializers,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Ushort do
   @enforce_keys [:ushort]
   defstruct [:ushort]
@@ -14551,12 +14584,15 @@ defmodule Yield do
 end
 
 defmodule Obj6 do
-  @enforce_keys [:dummy, :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, :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]
+  @enforce_keys [:dummy, :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 [:dummy, :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__{
           dummy: integer(),
+          unowned: Unowned.t(),
+          unsafe: Unsafe.t(),
           unsigned: Unsigned.t(),
+          use_serializers: UseSerializers.t(),
           ushort: Ushort.t(),
           using: Using.t(),
           utf8_json_reader: Utf8JSONReader.t(),
@@ -14587,7 +14623,10 @@ defmodule Obj6 do
   def from_map(m) do
     %Obj6{
       dummy: decode_dummy(m["dummy"]),
+      unowned: Unowned.from_map(m["unowned"]),
+      unsafe: Unsafe.from_map(m["unsafe"]),
       unsigned: Unsigned.from_map(m["unsigned"]),
+      use_serializers: UseSerializers.from_map(m["UseSerializers"]),
       ushort: Ushort.from_map(m["ushort"]),
       using: Using.from_map(m["using"]),
       utf8_json_reader: Utf8JSONReader.from_map(m["Utf8JsonReader"]),
@@ -14619,7 +14658,10 @@ defmodule Obj6 do
   def to_map(struct) do
     %{
       "dummy" => struct.dummy,
+      "unowned" => Unowned.to_map(struct.unowned),
+      "unsafe" => Unsafe.to_map(struct.unsafe),
       "unsigned" => Unsigned.to_map(struct.unsigned),
+      "UseSerializers" => UseSerializers.to_map(struct.use_serializers),
       "ushort" => Ushort.to_map(struct.ushort),
       "using" => Using.to_map(struct.using),
       "Utf8JsonReader" => Utf8JSONReader.to_map(struct.utf8_json_reader),
diff --git a/base/elm/test/inputs/json/misc/00ec5.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/00ec5.json/default/QuickType.elm
index 286ecb4..20ac735 100644
--- a/base/elm/test/inputs/json/misc/00ec5.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/00ec5.json/default/QuickType.elm
@@ -160,7 +160,7 @@ provider =
 encodeProvider : Provider -> Jenc.Value
 encodeProvider x =
     Jenc.object
-        [ ("properties", Jenc.dict identity encodeProperty x.properties)
+        [ ("properties", makeDictEncoder identity encodeProperty x.properties)
         ]
 
 property : Jdec.Decoder Property
@@ -303,6 +303,14 @@ encodeSchema x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/033b1.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/033b1.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/033b1.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/033b1.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/09f54.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/09f54.json/default/QuickType.elm
index b7adef0..8b79e00 100644
--- a/base/elm/test/inputs/json/misc/09f54.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/09f54.json/default/QuickType.elm
@@ -61,7 +61,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("data", Jenc.dict identity encodeDatum x.data)
+        [ ("data", makeDictEncoder identity encodeDatum x.data)
         , ("description", encodeDescription x.description)
         ]
 
@@ -97,6 +97,14 @@ encodeDescription x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/167d6.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/167d6.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/167d6.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/167d6.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/43eaf.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/43eaf.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/43eaf.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/43eaf.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/5f3a1.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/5f3a1.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/5f3a1.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/5f3a1.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/6260a.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/6260a.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/6260a.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/6260a.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/70c77.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/70c77.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/70c77.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/70c77.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/75912.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/75912.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/75912.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/75912.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/76ae1.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/76ae1.json/default/QuickType.elm
index 0c8edf9..206da10 100644
--- a/base/elm/test/inputs/json/misc/76ae1.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/76ae1.json/default/QuickType.elm
@@ -316,7 +316,7 @@ article =
 encodeArticle : Article -> Jenc.Value
 encodeArticle x =
     Jenc.object
-        [ ("properties", Jenc.dict identity encodeProperty x.properties)
+        [ ("properties", makeDictEncoder identity encodeProperty x.properties)
         ]
 
 property : Jdec.Decoder Property
@@ -722,6 +722,14 @@ encodeSchemaType x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/7d397.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/7d397.json/default/QuickType.elm
index f1f71b2..9366d1a 100644
--- a/base/elm/test/inputs/json/misc/7d397.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/7d397.json/default/QuickType.elm
@@ -170,7 +170,7 @@ listClass =
 encodeListClass : ListClass -> Jenc.Value
 encodeListClass x =
     Jenc.object
-        [ ("properties", Jenc.dict identity encodeProperty x.properties)
+        [ ("properties", makeDictEncoder identity encodeProperty x.properties)
         ]
 
 property : Jdec.Decoder Property
@@ -339,6 +339,14 @@ encodeItems x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/7f568.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/7f568.json/default/QuickType.elm
index 35c3eee..8d0421a 100644
--- a/base/elm/test/inputs/json/misc/7f568.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/7f568.json/default/QuickType.elm
@@ -103,7 +103,7 @@ encodeQuickTypeElement x =
         , ("commits_url", Jenc.string x.commitsURL)
         , ("created_at", Jenc.string x.createdAt)
         , ("description", makeNullableEncoder Jenc.string x.description)
-        , ("files", Jenc.dict identity encodeFile x.files)
+        , ("files", makeDictEncoder identity encodeFile x.files)
         , ("forks_url", Jenc.string x.forksURL)
         , ("git_pull_url", Jenc.string x.gitPullURL)
         , ("git_push_url", Jenc.string x.gitPushURL)
@@ -163,6 +163,14 @@ encodeLanguage x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/9617f.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/9617f.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/9617f.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/9617f.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/a9691.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/a9691.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/a9691.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/a9691.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/ac944.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/ac944.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/ac944.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/ac944.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/c0356.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/c0356.json/default/QuickType.elm
index 82cbe6f..4a91826 100644
--- a/base/elm/test/inputs/json/misc/c0356.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/c0356.json/default/QuickType.elm
@@ -60,7 +60,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("data", Jenc.dict identity encodeDatum x.data)
+        [ ("data", makeDictEncoder identity encodeDatum x.data)
         , ("description", encodeDescription x.description)
         ]
 
@@ -94,6 +94,14 @@ encodeDescription x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/cb81e.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/cb81e.json/default/QuickType.elm
index 9354bd5..2ee6a9e 100644
--- a/base/elm/test/inputs/json/misc/cb81e.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/cb81e.json/default/QuickType.elm
@@ -55,7 +55,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("data", Jenc.dict identity Jenc.string x.data)
+        [ ("data", makeDictEncoder identity Jenc.string x.data)
         , ("description", encodeDescription x.description)
         ]
 
@@ -78,6 +78,14 @@ encodeDescription x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/cd463.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/cd463.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/cd463.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/cd463.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/cfbce.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/cfbce.json/default/QuickType.elm
index a54c0ff..02718b9 100644
--- a/base/elm/test/inputs/json/misc/cfbce.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/cfbce.json/default/QuickType.elm
@@ -51,11 +51,19 @@ encodeQuickType x =
     Jenc.object
         [ ("base", Jenc.string x.base)
         , ("date", Jenc.string x.date)
-        , ("rates", Jenc.dict identity Jenc.float x.rates)
+        , ("rates", makeDictEncoder identity Jenc.float x.rates)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/e324e.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/e324e.json/default/QuickType.elm
index 598ab89..a3f7298 100644
--- a/base/elm/test/inputs/json/misc/e324e.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/e324e.json/default/QuickType.elm
@@ -166,7 +166,7 @@ rate =
 encodeRate : Rate -> Jenc.Value
 encodeRate x =
     Jenc.object
-        [ ("properties", Jenc.dict identity encodeProperty x.properties)
+        [ ("properties", makeDictEncoder identity encodeProperty x.properties)
         ]
 
 property : Jdec.Decoder Property
@@ -322,6 +322,14 @@ encodeItems x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/ed095.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/ed095.json/default/QuickType.elm
index 7c5f919..323836c 100644
--- a/base/elm/test/inputs/json/misc/ed095.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/ed095.json/default/QuickType.elm
@@ -36,10 +36,18 @@ quickType : Jdec.Decoder QuickType
 quickType = Jdec.dict Jdec.string
 
 quickTypeToString : QuickType -> String
-quickTypeToString r = Jenc.encode 0 (Jenc.dict identity Jenc.string r)
+quickTypeToString r = Jenc.encode 0 (makeDictEncoder identity Jenc.string r)
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/misc/fd329.json/default/QuickType.elm b/head/elm/test/inputs/json/misc/fd329.json/default/QuickType.elm
index b7adef0..8b79e00 100644
--- a/base/elm/test/inputs/json/misc/fd329.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/misc/fd329.json/default/QuickType.elm
@@ -61,7 +61,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("data", Jenc.dict identity encodeDatum x.data)
+        [ ("data", makeDictEncoder identity encodeDatum x.data)
         , ("description", encodeDescription x.description)
         ]
 
@@ -97,6 +97,14 @@ encodeDescription x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/bug2037.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/bug2037.json/default/QuickType.elm
index 2be329e..ca3faea 100644
--- a/base/elm/test/inputs/json/priority/bug2037.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/bug2037.json/default/QuickType.elm
@@ -60,7 +60,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("mission_specs", Jenc.dict identity encodeMissionSpec x.missionSpecs)
+        [ ("mission_specs", makeDictEncoder identity encodeMissionSpec x.missionSpecs)
         ]
 
 missionSpec : Jdec.Decoder MissionSpec
@@ -71,7 +71,7 @@ missionSpec =
 encodeMissionSpec : MissionSpec -> Jenc.Value
 encodeMissionSpec x =
     Jenc.object
-        [ ("objectives", Jenc.dict identity encodeObjective x.objectives)
+        [ ("objectives", makeDictEncoder identity encodeObjective x.objectives)
         ]
 
 objective : Jdec.Decoder Objective
@@ -82,7 +82,7 @@ objective =
 encodeObjective : Objective -> Jenc.Value
 encodeObjective x =
     Jenc.object
-        [ ("rewards", Jenc.dict identity encodeReward x.rewards)
+        [ ("rewards", makeDictEncoder identity encodeReward x.rewards)
         ]
 
 reward : Jdec.Decoder Reward
@@ -97,6 +97,14 @@ encodeReward x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/bug855-short.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/bug855-short.json/default/QuickType.elm
index 6af0100..dd2a1cb 100644
--- a/base/elm/test/inputs/json/priority/bug855-short.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/bug855-short.json/default/QuickType.elm
@@ -45,7 +45,7 @@ quickType : Jdec.Decoder QuickType
 quickType = Jdec.dict quickTypeValue
 
 quickTypeToString : QuickType -> String
-quickTypeToString r = Jenc.encode 0 (Jenc.dict identity encodeQuickTypeValue r)
+quickTypeToString r = Jenc.encode 0 (makeDictEncoder identity encodeQuickTypeValue r)
 
 quickTypeValue : Jdec.Decoder QuickTypeValue
 quickTypeValue =
@@ -68,6 +68,14 @@ encodeQuickTypeValue x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/coin-pairs.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/coin-pairs.json/default/QuickType.elm
index a735414..8819cc5 100644
--- a/base/elm/test/inputs/json/priority/coin-pairs.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/coin-pairs.json/default/QuickType.elm
@@ -59,7 +59,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("pairs", Jenc.dict identity encodePair x.pairs)
+        [ ("pairs", makeDictEncoder identity encodePair x.pairs)
         , ("server_time", Jenc.int x.serverTime)
         ]
 
@@ -90,6 +90,14 @@ encodePair x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations1.json/array-type-array--eed288b23e27/QuickType.elm b/head/elm/test/inputs/json/priority/combinations1.json/array-type-array--eed288b23e27/QuickType.elm
index c216af5..04e92aa 100644
--- a/base/elm/test/inputs/json/priority/combinations1.json/array-type-array--eed288b23e27/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations1.json/array-type-array--eed288b23e27/QuickType.elm
@@ -642,7 +642,7 @@ encodeQuickType x =
         , ("fuzzy", Jenc.array encodeFuzzy x.fuzzy)
         , ("gardenwards", Jenc.array encodeGardenward x.gardenwards)
         , ("generalissimo", Jenc.array encodeGeneralissimo x.generalissimo)
-        , ("habeas", Jenc.array (makeNullableEncoder (Jenc.dict identity Jenc.int)) x.habeas)
+        , ("habeas", Jenc.array (makeNullableEncoder (makeDictEncoder identity Jenc.int)) x.habeas)
         , ("hemicrystalline", Jenc.array encodeHemicrystalline x.hemicrystalline)
         , ("hemocoele", Jenc.array encodeHemocoeleElement x.hemocoele)
         , ("hoister", Jenc.array encodeHoister x.hoister)
@@ -916,7 +916,7 @@ consilience =
 encodeConsilience : Consilience -> Jenc.Value
 encodeConsilience x = case x of
     DoubleInConsilience y -> Jenc.float y
-    IntegerMapInConsilience y -> Jenc.dict identity Jenc.int y
+    IntegerMapInConsilience y -> makeDictEncoder identity Jenc.int y
 
 constructor : Jdec.Decoder Constructor
 constructor =
@@ -928,7 +928,7 @@ constructor =
 encodeConstructor : Constructor -> Jenc.Value
 encodeConstructor x = case x of
     BoolInConstructor y -> Jenc.bool y
-    UnionMapInConstructor y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInConstructor y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 continuative : Jdec.Decoder Continuative
 continuative =
@@ -940,7 +940,7 @@ continuative =
 encodeContinuative : Continuative -> Jenc.Value
 encodeContinuative x = case x of
     StringInContinuative y -> Jenc.string y
-    IntegerMapInContinuative y -> Jenc.dict identity Jenc.int y
+    IntegerMapInContinuative y -> makeDictEncoder identity Jenc.int y
 
 credulityElement : Jdec.Decoder CredulityElement
 credulityElement =
@@ -1017,7 +1017,7 @@ encodeCreviced : Creviced -> Jenc.Value
 encodeCreviced x = case x of
     BoolInCreviced y -> Jenc.bool y
     StringInCreviced y -> Jenc.string y
-    IntegerMapInCreviced y -> Jenc.dict identity Jenc.int y
+    IntegerMapInCreviced y -> makeDictEncoder identity Jenc.int y
 
 deruralizeElement : Jdec.Decoder DeruralizeElement
 deruralizeElement =
@@ -1171,7 +1171,7 @@ encodeEleutheromania : Eleutheromania -> Jenc.Value
 encodeEleutheromania x = case x of
     StringInEleutheromania y -> Jenc.string y
     DoubleInEleutheromania y -> Jenc.float y
-    IntegerMapInEleutheromania y -> Jenc.dict identity Jenc.int y
+    IntegerMapInEleutheromania y -> makeDictEncoder identity Jenc.int y
 
 encrust : Jdec.Decoder Encrust
 encrust =
@@ -1469,7 +1469,7 @@ fuzzy =
 encodeFuzzy : Fuzzy -> Jenc.Value
 encodeFuzzy x = case x of
     IntegerInFuzzy y -> Jenc.int y
-    UnionMapInFuzzy y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInFuzzy y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 gardenward : Jdec.Decoder Gardenward
 gardenward =
@@ -1497,7 +1497,7 @@ encodeGeneralissimo : Generalissimo -> Jenc.Value
 encodeGeneralissimo x = case x of
     BoolInGeneralissimo y -> Jenc.bool y
     NullInGeneralissimo -> Jenc.null
-    IntegerMapInGeneralissimo y -> Jenc.dict identity Jenc.int y
+    IntegerMapInGeneralissimo y -> makeDictEncoder identity Jenc.int y
 
 hemicrystalline : Jdec.Decoder Hemicrystalline
 hemicrystalline =
@@ -1695,10 +1695,18 @@ jacutinga =
 encodeJacutinga : Jacutinga -> Jenc.Value
 encodeJacutinga x = case x of
     IntegerArrayInJacutinga y -> Jenc.array Jenc.int y
-    UnionMapInJacutinga y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInJacutinga y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations1.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/combinations1.json/default/QuickType.elm
index 8d42014..1734735 100644
--- a/base/elm/test/inputs/json/priority/combinations1.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations1.json/default/QuickType.elm
@@ -641,7 +641,7 @@ encodeQuickType x =
         , ("fuzzy", Jenc.list encodeFuzzy x.fuzzy)
         , ("gardenwards", Jenc.list encodeGardenward x.gardenwards)
         , ("generalissimo", Jenc.list encodeGeneralissimo x.generalissimo)
-        , ("habeas", Jenc.list (makeNullableEncoder (Jenc.dict identity Jenc.int)) x.habeas)
+        , ("habeas", Jenc.list (makeNullableEncoder (makeDictEncoder identity Jenc.int)) x.habeas)
         , ("hemicrystalline", Jenc.list encodeHemicrystalline x.hemicrystalline)
         , ("hemocoele", Jenc.list encodeHemocoeleElement x.hemocoele)
         , ("hoister", Jenc.list encodeHoister x.hoister)
@@ -915,7 +915,7 @@ consilience =
 encodeConsilience : Consilience -> Jenc.Value
 encodeConsilience x = case x of
     DoubleInConsilience y -> Jenc.float y
-    IntegerMapInConsilience y -> Jenc.dict identity Jenc.int y
+    IntegerMapInConsilience y -> makeDictEncoder identity Jenc.int y
 
 constructor : Jdec.Decoder Constructor
 constructor =
@@ -927,7 +927,7 @@ constructor =
 encodeConstructor : Constructor -> Jenc.Value
 encodeConstructor x = case x of
     BoolInConstructor y -> Jenc.bool y
-    UnionMapInConstructor y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInConstructor y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 continuative : Jdec.Decoder Continuative
 continuative =
@@ -939,7 +939,7 @@ continuative =
 encodeContinuative : Continuative -> Jenc.Value
 encodeContinuative x = case x of
     StringInContinuative y -> Jenc.string y
-    IntegerMapInContinuative y -> Jenc.dict identity Jenc.int y
+    IntegerMapInContinuative y -> makeDictEncoder identity Jenc.int y
 
 credulityElement : Jdec.Decoder CredulityElement
 credulityElement =
@@ -1016,7 +1016,7 @@ encodeCreviced : Creviced -> Jenc.Value
 encodeCreviced x = case x of
     BoolInCreviced y -> Jenc.bool y
     StringInCreviced y -> Jenc.string y
-    IntegerMapInCreviced y -> Jenc.dict identity Jenc.int y
+    IntegerMapInCreviced y -> makeDictEncoder identity Jenc.int y
 
 deruralizeElement : Jdec.Decoder DeruralizeElement
 deruralizeElement =
@@ -1170,7 +1170,7 @@ encodeEleutheromania : Eleutheromania -> Jenc.Value
 encodeEleutheromania x = case x of
     StringInEleutheromania y -> Jenc.string y
     DoubleInEleutheromania y -> Jenc.float y
-    IntegerMapInEleutheromania y -> Jenc.dict identity Jenc.int y
+    IntegerMapInEleutheromania y -> makeDictEncoder identity Jenc.int y
 
 encrust : Jdec.Decoder Encrust
 encrust =
@@ -1468,7 +1468,7 @@ fuzzy =
 encodeFuzzy : Fuzzy -> Jenc.Value
 encodeFuzzy x = case x of
     IntegerInFuzzy y -> Jenc.int y
-    UnionMapInFuzzy y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInFuzzy y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 gardenward : Jdec.Decoder Gardenward
 gardenward =
@@ -1496,7 +1496,7 @@ encodeGeneralissimo : Generalissimo -> Jenc.Value
 encodeGeneralissimo x = case x of
     BoolInGeneralissimo y -> Jenc.bool y
     NullInGeneralissimo -> Jenc.null
-    IntegerMapInGeneralissimo y -> Jenc.dict identity Jenc.int y
+    IntegerMapInGeneralissimo y -> makeDictEncoder identity Jenc.int y
 
 hemicrystalline : Jdec.Decoder Hemicrystalline
 hemicrystalline =
@@ -1694,10 +1694,18 @@ jacutinga =
 encodeJacutinga : Jacutinga -> Jenc.Value
 encodeJacutinga x = case x of
     IntegerArrayInJacutinga y -> Jenc.list Jenc.int y
-    UnionMapInJacutinga y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInJacutinga y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations2.json/array-type-array--eed288b23e27/QuickType.elm b/head/elm/test/inputs/json/priority/combinations2.json/array-type-array--eed288b23e27/QuickType.elm
index ebd3231..b0b1001 100644
--- a/base/elm/test/inputs/json/priority/combinations2.json/array-type-array--eed288b23e27/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations2.json/array-type-array--eed288b23e27/QuickType.elm
@@ -579,13 +579,13 @@ encodeQuickType x =
         , ("amphithyron", Jenc.array (makeNullableEncoder encodeAmphithyron) x.amphithyron)
         , ("Andriana", Jenc.array (makeNullableEncoder Jenc.string) x.andriana)
         , ("ankee", Jenc.array encodeAnkeeElement x.ankee)
-        , ("annihilator", Jenc.array (makeNullableEncoder (Jenc.dict identity (makeNullableEncoder Jenc.int))) x.annihilator)
+        , ("annihilator", Jenc.array (makeNullableEncoder (makeDictEncoder identity (makeNullableEncoder Jenc.int))) x.annihilator)
         , ("annulose", always Jenc.null x.annulose)
         , ("Ansarie", Jenc.array encodeAnsarieElement x.ansarie)
         , ("aphasia", Jenc.array encodeAphasia x.aphasia)
         , ("asprawl", Jenc.array encodeAsprawl x.asprawl)
         , ("attractive", Jenc.array (makeNullableEncoder Jenc.bool) x.attractive)
-        , ("barksome", Jenc.dict identity Jenc.int x.barksome)
+        , ("barksome", makeDictEncoder identity Jenc.int x.barksome)
         , ("bedesman", Jenc.array encodeBedesman x.bedesman)
         , ("belard", Jenc.array encodeBelard x.belard)
         , ("bocking", Jenc.array encodeBocking x.bocking)
@@ -612,7 +612,7 @@ encodeQuickType x =
         , ("School", Jenc.array encodeSchool x.school)
         , ("Shakespearolater", Jenc.array encodeShakespearolater x.shakespearolater)
         , ("Svan", Jenc.array Jenc.float x.svan)
-        , ("Wayao", Jenc.dict identity Jenc.float x.wayao)
+        , ("Wayao", makeDictEncoder identity Jenc.float x.wayao)
         ]
 
 abranchiata : Jdec.Decoder Abranchiata
@@ -641,7 +641,7 @@ encodeAcademe : Academe -> Jenc.Value
 encodeAcademe x = case x of
     IntegerArrayInAcademe y -> Jenc.array Jenc.int y
     IntegerInAcademe y -> Jenc.int y
-    IntegerMapInAcademe y -> Jenc.dict identity Jenc.int y
+    IntegerMapInAcademe y -> makeDictEncoder identity Jenc.int y
 
 acquirable : Jdec.Decoder Acquirable
 acquirable =
@@ -653,7 +653,7 @@ acquirable =
 encodeAcquirable : Acquirable -> Jenc.Value
 encodeAcquirable x = case x of
     UnionArrayInAcquirable y -> Jenc.array (makeNullableEncoder Jenc.int) y
-    IntegerMapInAcquirable y -> Jenc.dict identity Jenc.int y
+    IntegerMapInAcquirable y -> makeDictEncoder identity Jenc.int y
 
 aerometry : Jdec.Decoder Aerometry
 aerometry =
@@ -1034,7 +1034,7 @@ encodeBocking : Bocking -> Jenc.Value
 encodeBocking x = case x of
     IntegerArrayInBocking y -> Jenc.array Jenc.int y
     BoolInBocking y -> Jenc.bool y
-    IntegerMapInBocking y -> Jenc.dict identity Jenc.int y
+    IntegerMapInBocking y -> makeDictEncoder identity Jenc.int y
 
 brawlingly : Jdec.Decoder Brawlingly
 brawlingly =
@@ -1046,7 +1046,7 @@ brawlingly =
 encodeBrawlingly : Brawlingly -> Jenc.Value
 encodeBrawlingly x = case x of
     NullArrayInBrawlingly y -> Jenc.array (always Jenc.null) y
-    UnionMapInBrawlingly y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInBrawlingly y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 brookie : Jdec.Decoder Brookie
 brookie =
@@ -1098,7 +1098,7 @@ encodeCatallactic : Catallactic -> Jenc.Value
 encodeCatallactic x = case x of
     NullArrayInCatallactic y -> Jenc.array (always Jenc.null) y
     BoolInCatallactic y -> Jenc.bool y
-    IntegerMapInCatallactic y -> Jenc.dict identity Jenc.int y
+    IntegerMapInCatallactic y -> makeDictEncoder identity Jenc.int y
 
 cemental : Jdec.Decoder Cemental
 cemental =
@@ -1112,7 +1112,7 @@ encodeCemental : Cemental -> Jenc.Value
 encodeCemental x = case x of
     IntegerArrayInCemental y -> Jenc.array Jenc.int y
     DoubleInCemental y -> Jenc.float y
-    IntegerMapInCemental y -> Jenc.dict identity Jenc.int y
+    IntegerMapInCemental y -> makeDictEncoder identity Jenc.int y
 
 chytridiaceaeElement : Jdec.Decoder ChytridiaceaeElement
 chytridiaceaeElement =
@@ -1284,7 +1284,7 @@ eupatorium =
 encodeEupatorium : Eupatorium -> Jenc.Value
 encodeEupatorium x = case x of
     NullArrayInEupatorium y -> Jenc.array (always Jenc.null) y
-    IntegerMapInEupatorium y -> Jenc.dict identity Jenc.int y
+    IntegerMapInEupatorium y -> makeDictEncoder identity Jenc.int y
 
 gryphosaurusElement : Jdec.Decoder GryphosaurusElement
 gryphosaurusElement =
@@ -1359,7 +1359,7 @@ koryak =
 encodeKoryak : Koryak -> Jenc.Value
 encodeKoryak x = case x of
     StringInKoryak y -> Jenc.string y
-    UnionMapInKoryak y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInKoryak y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 laviniaElement : Jdec.Decoder LaviniaElement
 laviniaElement =
@@ -1547,7 +1547,7 @@ encodeSchool : School -> Jenc.Value
 encodeSchool x = case x of
     IntegerInSchool y -> Jenc.int y
     NullInSchool -> Jenc.null
-    IntegerMapInSchool y -> Jenc.dict identity Jenc.int y
+    IntegerMapInSchool y -> makeDictEncoder identity Jenc.int y
 
 shakespearolater : Jdec.Decoder Shakespearolater
 shakespearolater =
@@ -1565,6 +1565,14 @@ encodeShakespearolater x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations2.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/combinations2.json/default/QuickType.elm
index 3d9652b..adec549 100644
--- a/base/elm/test/inputs/json/priority/combinations2.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations2.json/default/QuickType.elm
@@ -578,13 +578,13 @@ encodeQuickType x =
         , ("amphithyron", Jenc.list (makeNullableEncoder encodeAmphithyron) x.amphithyron)
         , ("Andriana", Jenc.list (makeNullableEncoder Jenc.string) x.andriana)
         , ("ankee", Jenc.list encodeAnkeeElement x.ankee)
-        , ("annihilator", Jenc.list (makeNullableEncoder (Jenc.dict identity (makeNullableEncoder Jenc.int))) x.annihilator)
+        , ("annihilator", Jenc.list (makeNullableEncoder (makeDictEncoder identity (makeNullableEncoder Jenc.int))) x.annihilator)
         , ("annulose", always Jenc.null x.annulose)
         , ("Ansarie", Jenc.list encodeAnsarieElement x.ansarie)
         , ("aphasia", Jenc.list encodeAphasia x.aphasia)
         , ("asprawl", Jenc.list encodeAsprawl x.asprawl)
         , ("attractive", Jenc.list (makeNullableEncoder Jenc.bool) x.attractive)
-        , ("barksome", Jenc.dict identity Jenc.int x.barksome)
+        , ("barksome", makeDictEncoder identity Jenc.int x.barksome)
         , ("bedesman", Jenc.list encodeBedesman x.bedesman)
         , ("belard", Jenc.list encodeBelard x.belard)
         , ("bocking", Jenc.list encodeBocking x.bocking)
@@ -611,7 +611,7 @@ encodeQuickType x =
         , ("School", Jenc.list encodeSchool x.school)
         , ("Shakespearolater", Jenc.list encodeShakespearolater x.shakespearolater)
         , ("Svan", Jenc.list Jenc.float x.svan)
-        , ("Wayao", Jenc.dict identity Jenc.float x.wayao)
+        , ("Wayao", makeDictEncoder identity Jenc.float x.wayao)
         ]
 
 abranchiata : Jdec.Decoder Abranchiata
@@ -640,7 +640,7 @@ encodeAcademe : Academe -> Jenc.Value
 encodeAcademe x = case x of
     IntegerArrayInAcademe y -> Jenc.list Jenc.int y
     IntegerInAcademe y -> Jenc.int y
-    IntegerMapInAcademe y -> Jenc.dict identity Jenc.int y
+    IntegerMapInAcademe y -> makeDictEncoder identity Jenc.int y
 
 acquirable : Jdec.Decoder Acquirable
 acquirable =
@@ -652,7 +652,7 @@ acquirable =
 encodeAcquirable : Acquirable -> Jenc.Value
 encodeAcquirable x = case x of
     UnionArrayInAcquirable y -> Jenc.list (makeNullableEncoder Jenc.int) y
-    IntegerMapInAcquirable y -> Jenc.dict identity Jenc.int y
+    IntegerMapInAcquirable y -> makeDictEncoder identity Jenc.int y
 
 aerometry : Jdec.Decoder Aerometry
 aerometry =
@@ -1033,7 +1033,7 @@ encodeBocking : Bocking -> Jenc.Value
 encodeBocking x = case x of
     IntegerArrayInBocking y -> Jenc.list Jenc.int y
     BoolInBocking y -> Jenc.bool y
-    IntegerMapInBocking y -> Jenc.dict identity Jenc.int y
+    IntegerMapInBocking y -> makeDictEncoder identity Jenc.int y
 
 brawlingly : Jdec.Decoder Brawlingly
 brawlingly =
@@ -1045,7 +1045,7 @@ brawlingly =
 encodeBrawlingly : Brawlingly -> Jenc.Value
 encodeBrawlingly x = case x of
     NullArrayInBrawlingly y -> Jenc.list (always Jenc.null) y
-    UnionMapInBrawlingly y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInBrawlingly y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 brookie : Jdec.Decoder Brookie
 brookie =
@@ -1097,7 +1097,7 @@ encodeCatallactic : Catallactic -> Jenc.Value
 encodeCatallactic x = case x of
     NullArrayInCatallactic y -> Jenc.list (always Jenc.null) y
     BoolInCatallactic y -> Jenc.bool y
-    IntegerMapInCatallactic y -> Jenc.dict identity Jenc.int y
+    IntegerMapInCatallactic y -> makeDictEncoder identity Jenc.int y
 
 cemental : Jdec.Decoder Cemental
 cemental =
@@ -1111,7 +1111,7 @@ encodeCemental : Cemental -> Jenc.Value
 encodeCemental x = case x of
     IntegerArrayInCemental y -> Jenc.list Jenc.int y
     DoubleInCemental y -> Jenc.float y
-    IntegerMapInCemental y -> Jenc.dict identity Jenc.int y
+    IntegerMapInCemental y -> makeDictEncoder identity Jenc.int y
 
 chytridiaceaeElement : Jdec.Decoder ChytridiaceaeElement
 chytridiaceaeElement =
@@ -1283,7 +1283,7 @@ eupatorium =
 encodeEupatorium : Eupatorium -> Jenc.Value
 encodeEupatorium x = case x of
     NullArrayInEupatorium y -> Jenc.list (always Jenc.null) y
-    IntegerMapInEupatorium y -> Jenc.dict identity Jenc.int y
+    IntegerMapInEupatorium y -> makeDictEncoder identity Jenc.int y
 
 gryphosaurusElement : Jdec.Decoder GryphosaurusElement
 gryphosaurusElement =
@@ -1358,7 +1358,7 @@ koryak =
 encodeKoryak : Koryak -> Jenc.Value
 encodeKoryak x = case x of
     StringInKoryak y -> Jenc.string y
-    UnionMapInKoryak y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInKoryak y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 laviniaElement : Jdec.Decoder LaviniaElement
 laviniaElement =
@@ -1546,7 +1546,7 @@ encodeSchool : School -> Jenc.Value
 encodeSchool x = case x of
     IntegerInSchool y -> Jenc.int y
     NullInSchool -> Jenc.null
-    IntegerMapInSchool y -> Jenc.dict identity Jenc.int y
+    IntegerMapInSchool y -> makeDictEncoder identity Jenc.int y
 
 shakespearolater : Jdec.Decoder Shakespearolater
 shakespearolater =
@@ -1564,6 +1564,14 @@ encodeShakespearolater x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations3.json/array-type-array--eed288b23e27/QuickType.elm b/head/elm/test/inputs/json/priority/combinations3.json/array-type-array--eed288b23e27/QuickType.elm
index b7a4fb5..95c4162 100644
--- a/base/elm/test/inputs/json/priority/combinations3.json/array-type-array--eed288b23e27/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations3.json/array-type-array--eed288b23e27/QuickType.elm
@@ -714,7 +714,7 @@ encodeQuickType x =
         , ("prefreshman", Jenc.array encodePrefreshmanElement x.prefreshman)
         , ("prehensility", Jenc.array encodePrehensility x.prehensility)
         , ("prevoidance", Jenc.array encodePrevoidance x.prevoidance)
-        , ("probant", Jenc.array (Jenc.dict identity (makeNullableEncoder Jenc.int)) x.probant)
+        , ("probant", Jenc.array (makeDictEncoder identity (makeNullableEncoder Jenc.int)) x.probant)
         , ("protext", Jenc.array encodeProtext x.protext)
         ]
 
@@ -789,7 +789,7 @@ kongoni =
 encodeKongoni : Kongoni -> Jenc.Value
 encodeKongoni x = case x of
     IntegerArrayInKongoni y -> Jenc.array Jenc.int y
-    IntegerMapInKongoni y -> Jenc.dict identity Jenc.int y
+    IntegerMapInKongoni y -> makeDictEncoder identity Jenc.int y
 
 ladronismElement : Jdec.Decoder LadronismElement
 ladronismElement =
@@ -1462,7 +1462,7 @@ paleographically =
 encodePaleographically : Paleographically -> Jenc.Value
 encodePaleographically x = case x of
     DoubleInPaleographically y -> Jenc.float y
-    UnionMapInPaleographically y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInPaleographically y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 pamphletwise : Jdec.Decoder Pamphletwise
 pamphletwise =
@@ -1476,7 +1476,7 @@ encodePamphletwise : Pamphletwise -> Jenc.Value
 encodePamphletwise x = case x of
     IntegerInPamphletwise y -> Jenc.int y
     StringInPamphletwise y -> Jenc.string y
-    IntegerMapInPamphletwise y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPamphletwise y -> makeDictEncoder identity Jenc.int y
 
 pediatric : Jdec.Decoder Pediatric
 pediatric =
@@ -1613,7 +1613,7 @@ placuntiti =
 encodePlacuntiti : Placuntiti -> Jenc.Value
 encodePlacuntiti x = case x of
     IntegerInPlacuntiti y -> Jenc.int y
-    IntegerMapInPlacuntiti y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPlacuntiti y -> makeDictEncoder identity Jenc.int y
 
 plectopterous : Jdec.Decoder Plectopterous
 plectopterous =
@@ -1625,7 +1625,7 @@ plectopterous =
 encodePlectopterous : Plectopterous -> Jenc.Value
 encodePlectopterous x = case x of
     DoubleInPlectopterous y -> Jenc.float y
-    IntegerMapInPlectopterous y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPlectopterous y -> makeDictEncoder identity Jenc.int y
 
 pneumocele : Jdec.Decoder Pneumocele
 pneumocele =
@@ -1710,7 +1710,7 @@ encodePoormaster : Poormaster -> Jenc.Value
 encodePoormaster x = case x of
     IntegerArrayInPoormaster y -> Jenc.array Jenc.int y
     NullInPoormaster -> Jenc.null
-    IntegerMapInPoormaster y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPoormaster y -> makeDictEncoder identity Jenc.int y
 
 potwhiskyElement : Jdec.Decoder PotwhiskyElement
 potwhiskyElement =
@@ -1896,6 +1896,14 @@ encodeProtext x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations3.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/combinations3.json/default/QuickType.elm
index 8e8d31e..5e0c29d 100644
--- a/base/elm/test/inputs/json/priority/combinations3.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations3.json/default/QuickType.elm
@@ -713,7 +713,7 @@ encodeQuickType x =
         , ("prefreshman", Jenc.list encodePrefreshmanElement x.prefreshman)
         , ("prehensility", Jenc.list encodePrehensility x.prehensility)
         , ("prevoidance", Jenc.list encodePrevoidance x.prevoidance)
-        , ("probant", Jenc.list (Jenc.dict identity (makeNullableEncoder Jenc.int)) x.probant)
+        , ("probant", Jenc.list (makeDictEncoder identity (makeNullableEncoder Jenc.int)) x.probant)
         , ("protext", Jenc.list encodeProtext x.protext)
         ]
 
@@ -788,7 +788,7 @@ kongoni =
 encodeKongoni : Kongoni -> Jenc.Value
 encodeKongoni x = case x of
     IntegerArrayInKongoni y -> Jenc.list Jenc.int y
-    IntegerMapInKongoni y -> Jenc.dict identity Jenc.int y
+    IntegerMapInKongoni y -> makeDictEncoder identity Jenc.int y
 
 ladronismElement : Jdec.Decoder LadronismElement
 ladronismElement =
@@ -1461,7 +1461,7 @@ paleographically =
 encodePaleographically : Paleographically -> Jenc.Value
 encodePaleographically x = case x of
     DoubleInPaleographically y -> Jenc.float y
-    UnionMapInPaleographically y -> Jenc.dict identity (makeNullableEncoder Jenc.int) y
+    UnionMapInPaleographically y -> makeDictEncoder identity (makeNullableEncoder Jenc.int) y
 
 pamphletwise : Jdec.Decoder Pamphletwise
 pamphletwise =
@@ -1475,7 +1475,7 @@ encodePamphletwise : Pamphletwise -> Jenc.Value
 encodePamphletwise x = case x of
     IntegerInPamphletwise y -> Jenc.int y
     StringInPamphletwise y -> Jenc.string y
-    IntegerMapInPamphletwise y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPamphletwise y -> makeDictEncoder identity Jenc.int y
 
 pediatric : Jdec.Decoder Pediatric
 pediatric =
@@ -1612,7 +1612,7 @@ placuntiti =
 encodePlacuntiti : Placuntiti -> Jenc.Value
 encodePlacuntiti x = case x of
     IntegerInPlacuntiti y -> Jenc.int y
-    IntegerMapInPlacuntiti y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPlacuntiti y -> makeDictEncoder identity Jenc.int y
 
 plectopterous : Jdec.Decoder Plectopterous
 plectopterous =
@@ -1624,7 +1624,7 @@ plectopterous =
 encodePlectopterous : Plectopterous -> Jenc.Value
 encodePlectopterous x = case x of
     DoubleInPlectopterous y -> Jenc.float y
-    IntegerMapInPlectopterous y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPlectopterous y -> makeDictEncoder identity Jenc.int y
 
 pneumocele : Jdec.Decoder Pneumocele
 pneumocele =
@@ -1709,7 +1709,7 @@ encodePoormaster : Poormaster -> Jenc.Value
 encodePoormaster x = case x of
     IntegerArrayInPoormaster y -> Jenc.list Jenc.int y
     NullInPoormaster -> Jenc.null
-    IntegerMapInPoormaster y -> Jenc.dict identity Jenc.int y
+    IntegerMapInPoormaster y -> makeDictEncoder identity Jenc.int y
 
 potwhiskyElement : Jdec.Decoder PotwhiskyElement
 potwhiskyElement =
@@ -1895,6 +1895,14 @@ encodeProtext x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations4.json/array-type-array--eed288b23e27/QuickType.elm b/head/elm/test/inputs/json/priority/combinations4.json/array-type-array--eed288b23e27/QuickType.elm
index 9f255de..b198681 100644
--- a/base/elm/test/inputs/json/priority/combinations4.json/array-type-array--eed288b23e27/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations4.json/array-type-array--eed288b23e27/QuickType.elm
@@ -830,7 +830,7 @@ encodeQuickType x =
         , ("untasked", Jenc.array encodeUntasked x.untasked)
         , ("unvarying", Jenc.array encodeUnvarying x.unvarying)
         , ("vehemently", Jenc.array encodeVehemently x.vehemently)
-        , ("warriorship", Jenc.dict identity Jenc.bool x.warriorship)
+        , ("warriorship", makeDictEncoder identity Jenc.bool x.warriorship)
         , ("whitepot", Jenc.array encodeWhitepot x.whitepot)
         , ("wrothy", Jenc.array encodeWrothyElement x.wrothy)
         ]
@@ -1014,7 +1014,7 @@ querier =
 encodeQuerier : Querier -> Jenc.Value
 encodeQuerier x = case x of
     BoolInQuerier y -> Jenc.bool y
-    IntegerMapInQuerier y -> Jenc.dict identity Jenc.int y
+    IntegerMapInQuerier y -> makeDictEncoder identity Jenc.int y
 
 rebarbative : Jdec.Decoder Rebarbative
 rebarbative =
@@ -1312,7 +1312,7 @@ encodeSaprophilous : Saprophilous -> Jenc.Value
 encodeSaprophilous x = case x of
     NullInSaprophilous -> Jenc.null
     StringInSaprophilous y -> Jenc.string y
-    IntegerMapInSaprophilous y -> Jenc.dict identity Jenc.int y
+    IntegerMapInSaprophilous y -> makeDictEncoder identity Jenc.int y
 
 saxtenElement : Jdec.Decoder SaxtenElement
 saxtenElement =
@@ -1446,7 +1446,7 @@ encodeScoffer : Scoffer -> Jenc.Value
 encodeScoffer x = case x of
     NullArrayInScoffer y -> Jenc.array (always Jenc.null) y
     NullInScoffer -> Jenc.null
-    IntegerMapInScoffer y -> Jenc.dict identity Jenc.int y
+    IntegerMapInScoffer y -> makeDictEncoder identity Jenc.int y
 
 scrampum : Jdec.Decoder Scrampum
 scrampum =
@@ -1632,7 +1632,7 @@ encodeStimulability : Stimulability -> Jenc.Value
 encodeStimulability x = case x of
     BoolInStimulability y -> Jenc.bool y
     IntegerInStimulability y -> Jenc.int y
-    IntegerMapInStimulability y -> Jenc.dict identity Jenc.int y
+    IntegerMapInStimulability y -> makeDictEncoder identity Jenc.int y
 
 strangleable : Jdec.Decoder Strangleable
 strangleable =
@@ -1852,7 +1852,7 @@ encodeUnbeginning : Unbeginning -> Jenc.Value
 encodeUnbeginning x = case x of
     NullArrayInUnbeginning y -> Jenc.array (always Jenc.null) y
     StringInUnbeginning y -> Jenc.string y
-    IntegerMapInUnbeginning y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnbeginning y -> makeDictEncoder identity Jenc.int y
 
 undesirability : Jdec.Decoder Undesirability
 undesirability =
@@ -1866,7 +1866,7 @@ encodeUndesirability : Undesirability -> Jenc.Value
 encodeUndesirability x = case x of
     IntegerArrayInUndesirability y -> Jenc.array Jenc.int y
     StringInUndesirability y -> Jenc.string y
-    IntegerMapInUndesirability y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUndesirability y -> makeDictEncoder identity Jenc.int y
 
 unerasing : Jdec.Decoder Unerasing
 unerasing =
@@ -1880,7 +1880,7 @@ encodeUnerasing : Unerasing -> Jenc.Value
 encodeUnerasing x = case x of
     NullArrayInUnerasing y -> Jenc.array (always Jenc.null) y
     IntegerInUnerasing y -> Jenc.int y
-    IntegerMapInUnerasing y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnerasing y -> makeDictEncoder identity Jenc.int y
 
 unguentarium : Jdec.Decoder Unguentarium
 unguentarium =
@@ -1979,7 +1979,7 @@ encodeUnmortgaged : Unmortgaged -> Jenc.Value
 encodeUnmortgaged x = case x of
     NullInUnmortgaged -> Jenc.null
     DoubleInUnmortgaged y -> Jenc.float y
-    IntegerMapInUnmortgaged y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnmortgaged y -> makeDictEncoder identity Jenc.int y
 
 unobstructed : Jdec.Decoder Unobstructed
 unobstructed =
@@ -2098,7 +2098,7 @@ encodeUntasked : Untasked -> Jenc.Value
 encodeUntasked x = case x of
     NullArrayInUntasked y -> Jenc.array (always Jenc.null) y
     DoubleInUntasked y -> Jenc.float y
-    IntegerMapInUntasked y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUntasked y -> makeDictEncoder identity Jenc.int y
 
 unvarying : Jdec.Decoder Unvarying
 unvarying =
@@ -2112,7 +2112,7 @@ encodeUnvarying : Unvarying -> Jenc.Value
 encodeUnvarying x = case x of
     BoolInUnvarying y -> Jenc.bool y
     DoubleInUnvarying y -> Jenc.float y
-    IntegerMapInUnvarying y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnvarying y -> makeDictEncoder identity Jenc.int y
 
 vehemently : Jdec.Decoder Vehemently
 vehemently =
@@ -2203,6 +2203,14 @@ encodeWrothyClass x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/combinations4.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/combinations4.json/default/QuickType.elm
index a334fbe..689f2dd 100644
--- a/base/elm/test/inputs/json/priority/combinations4.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/combinations4.json/default/QuickType.elm
@@ -829,7 +829,7 @@ encodeQuickType x =
         , ("untasked", Jenc.list encodeUntasked x.untasked)
         , ("unvarying", Jenc.list encodeUnvarying x.unvarying)
         , ("vehemently", Jenc.list encodeVehemently x.vehemently)
-        , ("warriorship", Jenc.dict identity Jenc.bool x.warriorship)
+        , ("warriorship", makeDictEncoder identity Jenc.bool x.warriorship)
         , ("whitepot", Jenc.list encodeWhitepot x.whitepot)
         , ("wrothy", Jenc.list encodeWrothyElement x.wrothy)
         ]
@@ -1013,7 +1013,7 @@ querier =
 encodeQuerier : Querier -> Jenc.Value
 encodeQuerier x = case x of
     BoolInQuerier y -> Jenc.bool y
-    IntegerMapInQuerier y -> Jenc.dict identity Jenc.int y
+    IntegerMapInQuerier y -> makeDictEncoder identity Jenc.int y
 
 rebarbative : Jdec.Decoder Rebarbative
 rebarbative =
@@ -1311,7 +1311,7 @@ encodeSaprophilous : Saprophilous -> Jenc.Value
 encodeSaprophilous x = case x of
     NullInSaprophilous -> Jenc.null
     StringInSaprophilous y -> Jenc.string y
-    IntegerMapInSaprophilous y -> Jenc.dict identity Jenc.int y
+    IntegerMapInSaprophilous y -> makeDictEncoder identity Jenc.int y
 
 saxtenElement : Jdec.Decoder SaxtenElement
 saxtenElement =
@@ -1445,7 +1445,7 @@ encodeScoffer : Scoffer -> Jenc.Value
 encodeScoffer x = case x of
     NullArrayInScoffer y -> Jenc.list (always Jenc.null) y
     NullInScoffer -> Jenc.null
-    IntegerMapInScoffer y -> Jenc.dict identity Jenc.int y
+    IntegerMapInScoffer y -> makeDictEncoder identity Jenc.int y
 
 scrampum : Jdec.Decoder Scrampum
 scrampum =
@@ -1631,7 +1631,7 @@ encodeStimulability : Stimulability -> Jenc.Value
 encodeStimulability x = case x of
     BoolInStimulability y -> Jenc.bool y
     IntegerInStimulability y -> Jenc.int y
-    IntegerMapInStimulability y -> Jenc.dict identity Jenc.int y
+    IntegerMapInStimulability y -> makeDictEncoder identity Jenc.int y
 
 strangleable : Jdec.Decoder Strangleable
 strangleable =
@@ -1851,7 +1851,7 @@ encodeUnbeginning : Unbeginning -> Jenc.Value
 encodeUnbeginning x = case x of
     NullArrayInUnbeginning y -> Jenc.list (always Jenc.null) y
     StringInUnbeginning y -> Jenc.string y
-    IntegerMapInUnbeginning y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnbeginning y -> makeDictEncoder identity Jenc.int y
 
 undesirability : Jdec.Decoder Undesirability
 undesirability =
@@ -1865,7 +1865,7 @@ encodeUndesirability : Undesirability -> Jenc.Value
 encodeUndesirability x = case x of
     IntegerArrayInUndesirability y -> Jenc.list Jenc.int y
     StringInUndesirability y -> Jenc.string y
-    IntegerMapInUndesirability y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUndesirability y -> makeDictEncoder identity Jenc.int y
 
 unerasing : Jdec.Decoder Unerasing
 unerasing =
@@ -1879,7 +1879,7 @@ encodeUnerasing : Unerasing -> Jenc.Value
 encodeUnerasing x = case x of
     NullArrayInUnerasing y -> Jenc.list (always Jenc.null) y
     IntegerInUnerasing y -> Jenc.int y
-    IntegerMapInUnerasing y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnerasing y -> makeDictEncoder identity Jenc.int y
 
 unguentarium : Jdec.Decoder Unguentarium
 unguentarium =
@@ -1978,7 +1978,7 @@ encodeUnmortgaged : Unmortgaged -> Jenc.Value
 encodeUnmortgaged x = case x of
     NullInUnmortgaged -> Jenc.null
     DoubleInUnmortgaged y -> Jenc.float y
-    IntegerMapInUnmortgaged y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnmortgaged y -> makeDictEncoder identity Jenc.int y
 
 unobstructed : Jdec.Decoder Unobstructed
 unobstructed =
@@ -2097,7 +2097,7 @@ encodeUntasked : Untasked -> Jenc.Value
 encodeUntasked x = case x of
     NullArrayInUntasked y -> Jenc.list (always Jenc.null) y
     DoubleInUntasked y -> Jenc.float y
-    IntegerMapInUntasked y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUntasked y -> makeDictEncoder identity Jenc.int y
 
 unvarying : Jdec.Decoder Unvarying
 unvarying =
@@ -2111,7 +2111,7 @@ encodeUnvarying : Unvarying -> Jenc.Value
 encodeUnvarying x = case x of
     BoolInUnvarying y -> Jenc.bool y
     DoubleInUnvarying y -> Jenc.float y
-    IntegerMapInUnvarying y -> Jenc.dict identity Jenc.int y
+    IntegerMapInUnvarying y -> makeDictEncoder identity Jenc.int y
 
 vehemently : Jdec.Decoder Vehemently
 vehemently =
@@ -2202,6 +2202,14 @@ encodeWrothyClass x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
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 bdfd658..77b59fe 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
@@ -192,6 +192,7 @@ module QuickType exposing
     , Locale
     , Lock
     , Long
+    , MakeDictEncoder
     , Map
     , MapEntry
     , MarshalJSON
@@ -202,8 +203,6 @@ module QuickType exposing
     , Native
     , New
     , Newtonsoft
-    , Nil
-    , No
     , If
     , Import
     , In
@@ -212,6 +211,8 @@ module QuickType exposing
     , Let
     , Module
     , Obj4
+    , Nil
+    , No
     , NoSuchMethod
     , Noexcept
     , Nonatomic
@@ -274,8 +275,6 @@ module QuickType exposing
     , RuntimeType
     , S
     , Sbyte
-    , Sealed
-    , Sel
     , Obj5
     , KSerializer
     , SelfClass
@@ -285,6 +284,8 @@ module QuickType exposing
     , Type
     , PrimitiveKind
     , TypeClass
+    , Sealed
+    , Sel
     , Select
     , Self
     , Sendable
@@ -339,12 +340,12 @@ module QuickType exposing
     , Undefined
     , Union
     , UnmarshalJSON
-    , Unowned
-    , Unsafe
-    , UseSerializers
     , Obj6
     , Where
+    , Unowned
+    , Unsafe
     , Unsigned
+    , UseSerializers
     , Ushort
     , Using
     , Utf8JSONReader
@@ -1081,6 +1082,7 @@ type alias Obj3 =
     , locale : Locale
     , lock : Lock
     , long : Long
+    , makeDictEncoder : MakeDictEncoder
     , map : Map
     , mapEntry : MapEntry
     , marshalJSON : MarshalJSON
@@ -1091,8 +1093,6 @@ type alias Obj3 =
     , native : Native
     , new : New
     , newtonsoft : Newtonsoft
-    , nil : Nil
-    , no : No
     , obj3If : If
     , obj3Import : Import
     , obj3In : In
@@ -1286,6 +1286,10 @@ type alias Long =
     { long : Int
     }
 
+type alias MakeDictEncoder =
+    { makeDictEncoder : Int
+    }
+
 type alias Map =
     { map : Int
     }
@@ -1326,14 +1330,6 @@ type alias Newtonsoft =
     { newtonsoft : Int
     }
 
-type alias Nil =
-    { nil : Int
-    }
-
-type alias No =
-    { no : Int
-    }
-
 type alias If =
     { ifIf : Int
     }
@@ -1364,6 +1360,8 @@ type alias Module =
 
 type alias Obj4 =
     { dummy : Int
+    , nil : Nil
+    , no : No
     , noSuchMethod : NoSuchMethod
     , noexcept : Noexcept
     , nonatomic : Nonatomic
@@ -1426,8 +1424,14 @@ type alias Obj4 =
     , runtimeType : RuntimeType
     , s : S
     , sbyte : Sbyte
-    , sealed : Sealed
-    , sel : Sel
+    }
+
+type alias Nil =
+    { nil : Int
+    }
+
+type alias No =
+    { no : Int
     }
 
 type alias NoSuchMethod =
@@ -1678,14 +1682,6 @@ type alias Sbyte =
     { sbyte : Int
     }
 
-type alias Sealed =
-    { sealed : Int
-    }
-
-type alias Sel =
-    { sel : Int
-    }
-
 type alias Obj5 =
     { dummy : Int
     , kSerializer : KSerializer
@@ -1696,6 +1692,8 @@ type alias Obj5 =
     , obj5Type : Type
     , primitiveKind : PrimitiveKind
     , purpleType : TypeClass
+    , sealed : Sealed
+    , sel : Sel
     , select : Select
     , self : Self
     , sendable : Sendable
@@ -1750,9 +1748,6 @@ type alias Obj5 =
     , undefined : Undefined
     , union : Union
     , unmarshalJSON : UnmarshalJSON
-    , unowned : Unowned
-    , unsafe : Unsafe
-    , useSerializers : UseSerializers
     }
 
 type alias KSerializer =
@@ -1787,6 +1782,14 @@ type alias TypeClass =
     { typeType : Int
     }
 
+type alias Sealed =
+    { sealed : Int
+    }
+
+type alias Sel =
+    { sel : Int
+    }
+
 type alias Select =
     { select : Int
     }
@@ -2003,22 +2006,13 @@ type alias UnmarshalJSON =
     { unmarshalJSON : Int
     }
 
-type alias Unowned =
-    { unowned : Int
-    }
-
-type alias Unsafe =
-    { unsafe : Int
-    }
-
-type alias UseSerializers =
-    { useSerializers : Int
-    }
-
 type alias Obj6 =
     { dummy : Int
     , obj6Where : Where
+    , unowned : Unowned
+    , unsafe : Unsafe
     , unsigned : Unsigned
+    , useSerializers : UseSerializers
     , ushort : Ushort
     , using : Using
     , utf8JSONReader : Utf8JSONReader
@@ -2043,10 +2037,22 @@ type alias Where =
     { whereWhere : Int
     }
 
+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
     }
@@ -3904,6 +3910,7 @@ obj3 =
         |> Jpipe.required "Locale" locale
         |> Jpipe.required "lock" lock
         |> Jpipe.required "long" long
+        |> Jpipe.required "makeDictEncoder" makeDictEncoder
         |> Jpipe.required "map" map
         |> Jpipe.required "MapEntry" mapEntry
         |> Jpipe.required "MarshalJSON" marshalJSON
@@ -3914,8 +3921,6 @@ obj3 =
         |> Jpipe.required "native" native
         |> Jpipe.required "new" new
         |> Jpipe.required "newtonsoft" newtonsoft
-        |> Jpipe.required "nil" nil
-        |> Jpipe.required "NO" no
         |> Jpipe.required "if" purpleIf
         |> Jpipe.required "import" purpleImport
         |> Jpipe.required "in" purpleIn
@@ -3974,6 +3979,7 @@ encodeObj3 x =
         , ("Locale", encodeLocale x.locale)
         , ("lock", encodeLock x.lock)
         , ("long", encodeLong x.long)
+        , ("makeDictEncoder", encodeMakeDictEncoder x.makeDictEncoder)
         , ("map", encodeMap x.map)
         , ("MapEntry", encodeMapEntry x.mapEntry)
         , ("MarshalJSON", encodeMarshalJSON x.marshalJSON)
@@ -3984,8 +3990,6 @@ encodeObj3 x =
         , ("native", encodeNative x.native)
         , ("new", encodeNew x.new)
         , ("newtonsoft", encodeNewtonsoft x.newtonsoft)
-        , ("nil", encodeNil x.nil)
-        , ("NO", encodeNo x.no)
         , ("if", encodeIf x.obj3If)
         , ("import", encodeImport x.obj3Import)
         , ("in", encodeIn x.obj3In)
@@ -4501,6 +4505,17 @@ encodeLong x =
         [ ("long", Jenc.int x.long)
         ]
 
+makeDictEncoder : Jdec.Decoder MakeDictEncoder
+makeDictEncoder =
+    Jdec.succeed MakeDictEncoder
+        |> Jpipe.required "makeDictEncoder" Jdec.int
+
+encodeMakeDictEncoder : MakeDictEncoder -> Jenc.Value
+encodeMakeDictEncoder x =
+    Jenc.object
+        [ ("makeDictEncoder", Jenc.int x.makeDictEncoder)
+        ]
+
 map : Jdec.Decoder Map
 map =
     Jdec.succeed Map
@@ -4611,28 +4626,6 @@ encodeNewtonsoft x =
         [ ("newtonsoft", Jenc.int x.newtonsoft)
         ]
 
-nil : Jdec.Decoder Nil
-nil =
-    Jdec.succeed Nil
-        |> Jpipe.required "nil" Jdec.int
-
-encodeNil : Nil -> Jenc.Value
-encodeNil x =
-    Jenc.object
-        [ ("nil", Jenc.int x.nil)
-        ]
-
-no : Jdec.Decoder No
-no =
-    Jdec.succeed No
-        |> Jpipe.required "NO" Jdec.int
-
-encodeNo : No -> Jenc.Value
-encodeNo x =
-    Jenc.object
-        [ ("NO", Jenc.int x.no)
-        ]
-
 purpleIf : Jdec.Decoder If
 purpleIf =
     Jdec.succeed If
@@ -4714,6 +4707,8 @@ obj4 : Jdec.Decoder Obj4
 obj4 =
     Jdec.succeed Obj4
         |> Jpipe.required "dummy" Jdec.int
+        |> Jpipe.required "nil" nil
+        |> Jpipe.required "NO" no
         |> Jpipe.required "noSuchMethod" noSuchMethod
         |> Jpipe.required "noexcept" noexcept
         |> Jpipe.required "nonatomic" nonatomic
@@ -4776,13 +4771,13 @@ obj4 =
         |> Jpipe.required "runtimeType" runtimeType
         |> Jpipe.required "s" s
         |> Jpipe.required "sbyte" sbyte
-        |> Jpipe.required "sealed" sealed
-        |> Jpipe.required "SEL" sel
 
 encodeObj4 : Obj4 -> Jenc.Value
 encodeObj4 x =
     Jenc.object
         [ ("dummy", Jenc.int x.dummy)
+        , ("nil", encodeNil x.nil)
+        , ("NO", encodeNo x.no)
         , ("noSuchMethod", encodeNoSuchMethod x.noSuchMethod)
         , ("noexcept", encodeNoexcept x.noexcept)
         , ("nonatomic", encodeNonatomic x.nonatomic)
@@ -4845,8 +4840,28 @@ encodeObj4 x =
         , ("runtimeType", encodeRuntimeType x.runtimeType)
         , ("s", encodeS x.s)
         , ("sbyte", encodeSbyte x.sbyte)
-        , ("sealed", encodeSealed x.sealed)
-        , ("SEL", encodeSel x.sel)
+        ]
+
+nil : Jdec.Decoder Nil
+nil =
+    Jdec.succeed Nil
+        |> Jpipe.required "nil" Jdec.int
+
+encodeNil : Nil -> Jenc.Value
+encodeNil x =
+    Jenc.object
+        [ ("nil", Jenc.int x.nil)
+        ]
+
+no : Jdec.Decoder No
+no =
+    Jdec.succeed No
+        |> Jpipe.required "NO" Jdec.int
+
+encodeNo : No -> Jenc.Value
+encodeNo x =
+    Jenc.object
+        [ ("NO", Jenc.int x.no)
         ]
 
 noSuchMethod : Jdec.Decoder NoSuchMethod
@@ -5531,28 +5546,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)
-        ]
-
 obj5 : Jdec.Decoder Obj5
 obj5 =
     Jdec.succeed Obj5
@@ -5565,6 +5558,8 @@ 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
@@ -5619,9 +5614,6 @@ obj5 =
         |> Jpipe.required "undefined" undefined
         |> Jpipe.required "union" union
         |> Jpipe.required "UnmarshalJSON" unmarshalJSON
-        |> Jpipe.required "unowned" unowned
-        |> Jpipe.required "unsafe" unsafe
-        |> Jpipe.required "UseSerializers" useSerializers
 
 encodeObj5 : Obj5 -> Jenc.Value
 encodeObj5 x =
@@ -5635,6 +5627,8 @@ 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)
@@ -5689,9 +5683,6 @@ encodeObj5 x =
         , ("undefined", encodeUndefined x.undefined)
         , ("union", encodeUnion x.union)
         , ("UnmarshalJSON", encodeUnmarshalJSON x.unmarshalJSON)
-        , ("unowned", encodeUnowned x.unowned)
-        , ("unsafe", encodeUnsafe x.unsafe)
-        , ("UseSerializers", encodeUseSerializers x.useSerializers)
         ]
 
 kSerializer : Jdec.Decoder KSerializer
@@ -5782,6 +5773,28 @@ 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
@@ -6376,45 +6389,15 @@ encodeUnmarshalJSON x =
         [ ("UnmarshalJSON", Jenc.int x.unmarshalJSON)
         ]
 
-unowned : Jdec.Decoder Unowned
-unowned =
-    Jdec.succeed Unowned
-        |> Jpipe.required "unowned" Jdec.int
-
-encodeUnowned : Unowned -> Jenc.Value
-encodeUnowned x =
-    Jenc.object
-        [ ("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)
-        ]
-
-useSerializers : Jdec.Decoder UseSerializers
-useSerializers =
-    Jdec.succeed UseSerializers
-        |> Jpipe.required "UseSerializers" Jdec.int
-
-encodeUseSerializers : UseSerializers -> Jenc.Value
-encodeUseSerializers x =
-    Jenc.object
-        [ ("UseSerializers", Jenc.int x.useSerializers)
-        ]
-
 obj6 : Jdec.Decoder Obj6
 obj6 =
     Jdec.succeed Obj6
         |> Jpipe.required "dummy" Jdec.int
         |> Jpipe.required "where" purpleWhere
+        |> Jpipe.required "unowned" unowned
+        |> Jpipe.required "unsafe" unsafe
         |> Jpipe.required "unsigned" unsigned
+        |> Jpipe.required "UseSerializers" useSerializers
         |> Jpipe.required "ushort" ushort
         |> Jpipe.required "using" using
         |> Jpipe.required "Utf8JsonReader" utf8JSONReader
@@ -6439,7 +6422,10 @@ encodeObj6 x =
     Jenc.object
         [ ("dummy", Jenc.int x.dummy)
         , ("where", encodeWhere x.obj6Where)
+        , ("unowned", encodeUnowned x.unowned)
+        , ("unsafe", encodeUnsafe x.unsafe)
         , ("unsigned", encodeUnsigned x.unsigned)
+        , ("UseSerializers", encodeUseSerializers x.useSerializers)
         , ("ushort", encodeUshort x.ushort)
         , ("using", encodeUsing x.using)
         , ("Utf8JsonReader", encodeUtf8JSONReader x.utf8JSONReader)
@@ -6471,6 +6457,28 @@ encodeWhere x =
         [ ("where", Jenc.int x.whereWhere)
         ]
 
+unowned : Jdec.Decoder Unowned
+unowned =
+    Jdec.succeed Unowned
+        |> Jpipe.required "unowned" Jdec.int
+
+encodeUnowned : Unowned -> Jenc.Value
+encodeUnowned x =
+    Jenc.object
+        [ ("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
@@ -6482,6 +6490,17 @@ encodeUnsigned x =
         [ ("unsigned", Jenc.int x.unsigned)
         ]
 
+useSerializers : Jdec.Decoder UseSerializers
+useSerializers =
+    Jdec.succeed UseSerializers
+        |> Jpipe.required "UseSerializers" Jdec.int
+
+encodeUseSerializers : UseSerializers -> Jenc.Value
+encodeUseSerializers x =
+    Jenc.object
+        [ ("UseSerializers", Jenc.int x.useSerializers)
+        ]
+
 ushort : Jdec.Decoder Ushort
 ushort =
     Jdec.succeed Ushort
diff --git a/base/elm/test/inputs/json/priority/nbl-stats.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/nbl-stats.json/default/QuickType.elm
index 1c0ae78..10c6581 100644
--- a/base/elm/test/inputs/json/priority/nbl-stats.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/nbl-stats.json/default/QuickType.elm
@@ -436,9 +436,9 @@ encodeQuickType x =
         , ("periodLengthREGULAR", Jenc.int x.periodLengthREGULAR)
         , ("periodType", encodePerType x.periodType)
         , ("periodsMax", Jenc.int x.periodsMax)
-        , ("scorers", Jenc.dict identity (Jenc.list encodeScorer) x.scorers)
+        , ("scorers", makeDictEncoder identity (Jenc.list encodeScorer) x.scorers)
         , ("timeline", Jenc.list identity x.timeline)
-        , ("tm", Jenc.dict identity encodeTm x.tm)
+        , ("tm", makeDictEncoder identity encodeTm x.tm)
         , ("totalTimeAdded", Jenc.int x.totalTimeAdded)
         , ("totallds", encodeTotallds x.totallds)
         ]
@@ -878,7 +878,7 @@ encodeTm x =
         , ("p2_score", Jenc.int x.p2Score)
         , ("p3_score", Jenc.int x.p3Score)
         , ("p4_score", Jenc.int x.p4Score)
-        , ("pl", Jenc.dict identity encodePl x.pl)
+        , ("pl", makeDictEncoder identity encodePl x.pl)
         , ("score", Jenc.int x.score)
         , ("scoring", Jenc.list encodeScorer x.scoring)
         , ("shortName", Jenc.string x.shortName)
@@ -945,11 +945,11 @@ lds =
 encodeLds : Lds -> Jenc.Value
 encodeLds x =
     Jenc.object
-        [ ("sAssists", Jenc.dict identity encodeScorer x.sAssists)
+        [ ("sAssists", makeDictEncoder identity encodeScorer x.sAssists)
         , ("sBlocks", encodeSBlocks x.sBlocks)
-        , ("sPoints", Jenc.dict identity encodeScorer x.sPoints)
-        , ("sReboundsTotal", Jenc.dict identity encodeScorer x.sReboundsTotal)
-        , ("sSteals", Jenc.dict identity encodeScorer x.sSteals)
+        , ("sPoints", makeDictEncoder identity encodeScorer x.sPoints)
+        , ("sReboundsTotal", makeDictEncoder identity encodeScorer x.sReboundsTotal)
+        , ("sSteals", makeDictEncoder identity encodeScorer x.sSteals)
         ]
 
 sBlocks : Jdec.Decoder SBlocks
@@ -1163,15 +1163,23 @@ totallds =
 encodeTotallds : Totallds -> Jenc.Value
 encodeTotallds x =
     Jenc.object
-        [ ("sAssists", Jenc.dict identity encodeScorer x.sAssists)
-        , ("sBlocks", Jenc.dict identity encodeScorer x.sBlocks)
-        , ("sPoints", Jenc.dict identity encodeScorer x.sPoints)
-        , ("sReboundsTotal", Jenc.dict identity encodeScorer x.sReboundsTotal)
-        , ("sSteals", Jenc.dict identity encodeScorer x.sSteals)
+        [ ("sAssists", makeDictEncoder identity encodeScorer x.sAssists)
+        , ("sBlocks", makeDictEncoder identity encodeScorer x.sBlocks)
+        , ("sPoints", makeDictEncoder identity encodeScorer x.sPoints)
+        , ("sReboundsTotal", makeDictEncoder identity encodeScorer x.sReboundsTotal)
+        , ("sSteals", makeDictEncoder identity encodeScorer x.sSteals)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/nested-objects.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/nested-objects.json/default/QuickType.elm
index 7b4fab7..1bf4bde 100644
--- a/base/elm/test/inputs/json/priority/nested-objects.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/nested-objects.json/default/QuickType.elm
@@ -47,12 +47,20 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("a", Jenc.dict identity Jenc.int x.a)
-        , ("b", Jenc.dict identity Jenc.int x.b)
+        [ ("a", makeDictEncoder identity Jenc.int x.a)
+        , ("b", makeDictEncoder identity Jenc.int x.b)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/priority/number-map.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/number-map.json/default/QuickType.elm
index 5f50911..335c6bc 100644
--- a/base/elm/test/inputs/json/priority/number-map.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/number-map.json/default/QuickType.elm
@@ -45,11 +45,19 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("foo", Jenc.dict identity Jenc.float x.foo)
+        [ ("foo", makeDictEncoder identity Jenc.float x.foo)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/samples/kitchen-sink.json/default/QuickType.elm b/head/elm/test/inputs/json/samples/kitchen-sink.json/default/QuickType.elm
index 2c4d0ae..797d894 100644
--- a/base/elm/test/inputs/json/samples/kitchen-sink.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/samples/kitchen-sink.json/default/QuickType.elm
@@ -105,10 +105,10 @@ encodeQuickType x =
         , ("differentThings", Jenc.list encodeDifferentThingElement x.differentThings)
         , ("doubleValue", Jenc.float x.doubleValue)
         , ("intValue", Jenc.int x.intValue)
-        , ("mapValue", Jenc.dict identity (makeNullableEncoder Jenc.int) x.mapValue)
+        , ("mapValue", makeDictEncoder identity (makeNullableEncoder Jenc.int) x.mapValue)
         , ("name with spaces", always Jenc.null x.nameWithSpaces)
         , ("nullValue", always Jenc.null x.nullValue)
-        , ("nullableMapValue", Jenc.dict identity (makeNullableEncoder Jenc.int) x.nullableMapValue)
+        , ("nullableMapValue", makeDictEncoder identity (makeNullableEncoder Jenc.int) x.nullableMapValue)
         , ("people", Jenc.list encodePersonElement x.people)
         , ("person", encodePurplePerson x.person)
         , ("stringValue", Jenc.string x.stringValue)
@@ -183,6 +183,14 @@ encodePurplePerson x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/elm/test/inputs/json/samples/us-avg-temperatures.json/default/QuickType.elm b/head/elm/test/inputs/json/samples/us-avg-temperatures.json/default/QuickType.elm
index b7adef0..8b79e00 100644
--- a/base/elm/test/inputs/json/samples/us-avg-temperatures.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/samples/us-avg-temperatures.json/default/QuickType.elm
@@ -61,7 +61,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("data", Jenc.dict identity encodeDatum x.data)
+        [ ("data", makeDictEncoder identity encodeDatum x.data)
         , ("description", encodeDescription x.description)
         ]
 
@@ -97,6 +97,14 @@ encodeDescription x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js
index 162dbc2..7eebad2 100644
--- a/base/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/00c36.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js
index 4d45847..01cc1b8 100644
--- a/base/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/00ec5.json/default/TopLevel.js
@@ -174,7 +174,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -185,7 +185,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/010b1.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/016af.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/016af.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/016af.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/016af.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/033b1.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js
index 6c1c8a4..21a854f 100644
--- a/base/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/050b0.json/default/TopLevel.js
@@ -163,7 +163,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -174,7 +174,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js
index e124161..5a0b524 100644
--- a/base/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/06bee.json/default/TopLevel.js
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -162,7 +162,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/07540.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/07540.json/default/TopLevel.js
index d9826f0..503b7cb 100644
--- a/base/flow/test/inputs/json/misc/07540.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/07540.json/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0779f.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js
index a298561..7a8a97d 100644
--- a/base/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/07c75.json/default/TopLevel.js
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js
index 1eccbad..22f369c 100644
--- a/base/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/09f54.json/default/TopLevel.js
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js
index fdf8c01..f9a1579 100644
--- a/base/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0a358.json/default/TopLevel.js
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js
index 82bc4f2..0908f0d 100644
--- a/base/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0a91a.json/default/TopLevel.js
@@ -327,7 +327,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -338,7 +338,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js
index 209fdf8..60f4667 100644
--- a/base/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0b91a.json/default/TopLevel.js
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js
index 9b7923c..921544b 100644
--- a/base/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0cffa.json/default/TopLevel.js
@@ -222,7 +222,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -233,7 +233,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
index 407cad3..da70a86 100644
--- a/base/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
@@ -184,7 +184,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -195,7 +195,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js
index 3ee24ee..2cc1039 100644
--- a/base/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/0fecf.json/default/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js
index 63eecca..44b2ca4 100644
--- a/base/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/10be4.json/default/TopLevel.js
@@ -174,7 +174,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -185,7 +185,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js
index f9cab5b..eac113f 100644
--- a/base/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/112b5.json/default/TopLevel.js
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js
index 3e28e99..535cac4 100644
--- a/base/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/127a1.json/default/TopLevel.js
@@ -221,7 +221,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -232,7 +232,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js
index 48593f5..2e44462 100644
--- a/base/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/13d8d.json/default/TopLevel.js
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -144,7 +144,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js
index 713e56b..7b56c90 100644
--- a/base/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/14d38.json/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/167d6.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/16bc5.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js
index db78db6..319d9f8 100644
--- a/base/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/176f1.json/default/TopLevel.js
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/1b28c.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js
index 56b0139..fb52e30 100644
--- a/base/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/1b409.json/default/TopLevel.js
@@ -198,7 +198,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -209,7 +209,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js
index e283f26..0e6c0ae 100644
--- a/base/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/2465e.json/default/TopLevel.js
@@ -180,7 +180,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -191,7 +191,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/24f52.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js
index 1dc4430..f81251b 100644
--- a/base/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/262f0.json/default/TopLevel.js
@@ -210,7 +210,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -221,7 +221,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js
index c9ba533..cb0c67c 100644
--- a/base/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/26b49.json/default/TopLevel.js
@@ -219,7 +219,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -230,7 +230,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js
index d4b28ed..9b151fa 100644
--- a/base/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/26c9c.json/default/TopLevel.js
@@ -294,7 +294,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -305,7 +305,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/27332.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/27332.json/default/TopLevel.js
index 934296a..2f9d303 100644
--- a/base/flow/test/inputs/json/misc/27332.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/27332.json/default/TopLevel.js
@@ -260,7 +260,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -271,7 +271,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js
index 6c6029e..6ea2f5d 100644
--- a/base/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/29f47.json/default/TopLevel.js
@@ -246,7 +246,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -257,7 +257,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
index 50f7c40..4062586 100644
--- a/base/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
@@ -214,7 +214,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -225,7 +225,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js
index e8a7f8a..6b37c06 100644
--- a/base/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/2df80.json/default/TopLevel.js
@@ -180,7 +180,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -191,7 +191,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/31189.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/31189.json/default/TopLevel.js
index 4fb8245..09427be 100644
--- a/base/flow/test/inputs/json/misc/31189.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/31189.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/32431.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/32431.json/default/TopLevel.js
index 9b836ab..c34e316 100644
--- a/base/flow/test/inputs/json/misc/32431.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/32431.json/default/TopLevel.js
@@ -178,7 +178,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -189,7 +189,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js
index 8f57115..a11f988 100644
--- a/base/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/32d5c.json/default/TopLevel.js
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js
index 400a636..de62c4e 100644
--- a/base/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/337ed.json/default/TopLevel.js
@@ -175,7 +175,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -186,7 +186,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js
index 954c924..d6913e1 100644
--- a/base/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/33d2e.json/default/TopLevel.js
@@ -160,7 +160,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -171,7 +171,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/34702.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/34702.json/default/TopLevel.js
index f14ce92..f7219b6 100644
--- a/base/flow/test/inputs/json/misc/34702.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/34702.json/default/TopLevel.js
@@ -195,7 +195,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -206,7 +206,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js
index 4c5794e..5a74561 100644
--- a/base/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3536b.json/default/TopLevel.js
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3659d.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/36d5d.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
index db78db6..319d9f8 100644
--- a/base/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
index 870cf6a..76c6c27 100644
--- a/base/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
@@ -208,7 +208,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -219,7 +219,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js
index 5d852e7..051c669 100644
--- a/base/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/421d4.json/default/TopLevel.js
@@ -221,7 +221,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -232,7 +232,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js
index 46aad64..ba501ee 100644
--- a/base/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/437e7.json/default/TopLevel.js
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -227,7 +227,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/43970.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/43970.json/default/TopLevel.js
index 96da4f2..4665310 100644
--- a/base/flow/test/inputs/json/misc/43970.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/43970.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/43eaf.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/458db.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/458db.json/default/TopLevel.js
index 602758a..f043a8e 100644
--- a/base/flow/test/inputs/json/misc/458db.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/458db.json/default/TopLevel.js
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -160,7 +160,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4961a.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js
index af5a140..4d82661 100644
--- a/base/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4a455.json/default/TopLevel.js
@@ -150,7 +150,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -161,7 +161,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4c547.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
index e9dc36d..931e768 100644
--- a/base/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
@@ -255,7 +255,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -266,7 +266,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/4e336.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/54147.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/54147.json/default/TopLevel.js
index ebba231..4c8c228 100644
--- a/base/flow/test/inputs/json/misc/54147.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/54147.json/default/TopLevel.js
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js
index d884bb6..4b3e4f4 100644
--- a/base/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/54d32.json/default/TopLevel.js
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js
index df6a35e..a5a4f74 100644
--- a/base/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/570ec.json/default/TopLevel.js
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js
index 2d34873..14ab7bb 100644
--- a/base/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5eae5.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5eb20.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
index e0c97d0..43d12f2 100644
--- a/base/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
@@ -295,7 +295,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -306,7 +306,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js
index 772ffb1..9e3059b 100644
--- a/base/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/617e8.json/default/TopLevel.js
@@ -294,7 +294,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -305,7 +305,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/61b66.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6260a.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js
index 5439a46..99004d8 100644
--- a/base/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/65dec.json/default/TopLevel.js
@@ -194,7 +194,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/66121.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/66121.json/default/TopLevel.js
index e1199ed..72dc9e9 100644
--- a/base/flow/test/inputs/json/misc/66121.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/66121.json/default/TopLevel.js
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -162,7 +162,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js
index 2c7f4a6..e8d1bfe 100644
--- a/base/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6617c.json/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js
index d156dcd..d197725 100644
--- a/base/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/67c03.json/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js
index 46cf69f..3a222bb 100644
--- a/base/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/68c30.json/default/TopLevel.js
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js
index c7e4986..efeec9e 100644
--- a/base/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6c155.json/default/TopLevel.js
@@ -160,7 +160,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -171,7 +171,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js
index 7b5ef08..6ee2b85 100644
--- a/base/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6de06.json/default/TopLevel.js
@@ -255,7 +255,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -266,7 +266,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js
index 3c0767b..e7a636f 100644
--- a/base/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6dec6.json/default/TopLevel.js
@@ -210,7 +210,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -221,7 +221,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js
index 7d2b1cf..5b80136 100644
--- a/base/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/6eb00.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/70c77.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js
index 1966444..6ef2318 100644
--- a/base/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/734ad.json/default/TopLevel.js
@@ -181,7 +181,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -192,7 +192,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/75912.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/75912.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/75912.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/75912.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js
index 5ffad09..b7b9fb9 100644
--- a/base/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7681c.json/default/TopLevel.js
@@ -223,7 +223,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -234,7 +234,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js
index f4001ff..9505580 100644
--- a/base/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/76ae1.json/default/TopLevel.js
@@ -291,7 +291,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -302,7 +302,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/77392.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/77392.json/default/TopLevel.js
index ec26653..019aea5 100644
--- a/base/flow/test/inputs/json/misc/77392.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/77392.json/default/TopLevel.js
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -145,7 +145,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js
index daed49b..84b9c32 100644
--- a/base/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7d397.json/default/TopLevel.js
@@ -182,7 +182,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -193,7 +193,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7d722.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js
index 46994ca..ef84f68 100644
--- a/base/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7df41.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js
index 5932680..df827d6 100644
--- a/base/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7eb30.json/default/TopLevel.js
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -162,7 +162,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js
index 6f21818..2bcc4cc 100644
--- a/base/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7f568.json/default/TopLevel.js
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
index d84d9a6..9319ea9 100644
--- a/base/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js
index f58d28c..b9e08a4 100644
--- a/base/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/80aff.json/default/TopLevel.js
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -137,7 +137,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/82509.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/82509.json/default/TopLevel.js
index 12cc75e..4a10d4a 100644
--- a/base/flow/test/inputs/json/misc/82509.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/82509.json/default/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js
index 6ba8b46..1b4095f 100644
--- a/base/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/8592b.json/default/TopLevel.js
@@ -230,7 +230,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -241,7 +241,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/88130.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/88130.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/88130.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/88130.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/8a62c.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/908db.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/908db.json/default/TopLevel.js
index 0a7d4d3..a3a695e 100644
--- a/base/flow/test/inputs/json/misc/908db.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/908db.json/default/TopLevel.js
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9617f.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js
index ef14be8..345f004 100644
--- a/base/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/96f7c.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js
index 6533855..c5eded5 100644
--- a/base/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9847b.json/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9929c.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js
index f298931..b18a4e6 100644
--- a/base/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/996bd.json/default/TopLevel.js
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -162,7 +162,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js
index 7a5b1c5..395074c 100644
--- a/base/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9a503.json/default/TopLevel.js
@@ -137,7 +137,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -148,7 +148,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
index be0be36..f5736f2 100644
--- a/base/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js
index 83fa291..3a783b8 100644
--- a/base/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/9eed5.json/default/TopLevel.js
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js
index 5725050..664e64c 100644
--- a/base/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a0496.json/default/TopLevel.js
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a1eca.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
index 43e579f..deeb4c5 100644
--- a/base/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
@@ -223,7 +223,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -234,7 +234,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a45b0.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a71df.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/a9691.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/abb4b.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ac944.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js
index 63eecca..44b2ca4 100644
--- a/base/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ad8be.json/default/TopLevel.js
@@ -174,7 +174,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -185,7 +185,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
index f6846b2..d03dd39 100644
--- a/base/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
@@ -204,7 +204,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -215,7 +215,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
index 670c8dd..0289e96 100644
--- a/base/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -164,7 +164,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js
index a3bad4d..fa19db9 100644
--- a/base/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/af2d1.json/default/TopLevel.js
@@ -215,7 +215,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js
index c90ee85..ff51e69 100644
--- a/base/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b4865.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
index e38f3a8..1845440 100644
--- a/base/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js
index 8fa46b9..77e9dd0 100644
--- a/base/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/b9f64.json/default/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/be234.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/be234.json/default/TopLevel.js
index 0cb3e64..5694092 100644
--- a/base/flow/test/inputs/json/misc/be234.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/be234.json/default/TopLevel.js
@@ -269,7 +269,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -280,7 +280,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js
index c715046..97954b8 100644
--- a/base/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c0356.json/default/TopLevel.js
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js
index c0554e5..6a8dce9 100644
--- a/base/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c3303.json/default/TopLevel.js
@@ -220,7 +220,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -231,7 +231,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
index ff97c25..cf17077 100644
--- a/base/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
index 2655a97..a52dfa4 100644
--- a/base/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
index 1ae3eae..0f5b4c6 100644
--- a/base/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -141,7 +141,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js
index d6a0df8..5775425 100644
--- a/base/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cb81e.json/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ccd18.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js
index c7ac2de..ad4ec40 100644
--- a/base/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cd238.json/default/TopLevel.js
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cd463.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js
index bb61a30..ed7c3e9 100644
--- a/base/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cda6c.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js
index 3bb973a..fdf3b5a 100644
--- a/base/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/cfbce.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js
index 6cc839f..745fefb 100644
--- a/base/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/d0908.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js
index 61d1e3f..77ae604 100644
--- a/base/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/d23d5.json/default/TopLevel.js
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
index 91a80f8..ca9919a 100644
--- a/base/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
@@ -209,7 +209,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -220,7 +220,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js
index ff5cb85..bb205d5 100644
--- a/base/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dc44f.json/default/TopLevel.js
@@ -233,7 +233,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -244,7 +244,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
index ff5cb85..bb205d5 100644
--- a/base/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
@@ -233,7 +233,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -244,7 +244,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js
index 2eed152..7aff8a9 100644
--- a/base/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/dec3a.json/default/TopLevel.js
@@ -168,7 +168,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -179,7 +179,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/df957.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/df957.json/default/TopLevel.js
index 6dba12d..a579f9d 100644
--- a/base/flow/test/inputs/json/misc/df957.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/df957.json/default/TopLevel.js
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
index ab2051d..de76368 100644
--- a/base/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
@@ -217,7 +217,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -228,7 +228,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js
index e774dfd..0b2bc84 100644
--- a/base/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e2915.json/default/TopLevel.js
@@ -208,7 +208,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -219,7 +219,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js
index 6ab5788..3bbcea2 100644
--- a/base/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e2a58.json/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js
index 6f4278c..bdb48a1 100644
--- a/base/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e324e.json/default/TopLevel.js
@@ -179,7 +179,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -190,7 +190,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js
index 15ed332..8275b18 100644
--- a/base/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e53b5.json/default/TopLevel.js
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js
index f9cab5b..eac113f 100644
--- a/base/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e64a0.json/default/TopLevel.js
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js
index 1459701..aab46ec 100644
--- a/base/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/e8b04.json/default/TopLevel.js
@@ -377,7 +377,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -388,7 +388,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js
index e58461b..30247d3 100644
--- a/base/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/ed095.json/default/TopLevel.js
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js
index ba01b2c..fef1440 100644
--- a/base/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f22f5.json/default/TopLevel.js
@@ -201,7 +201,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -212,7 +212,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js
index 6533855..c5eded5 100644
--- a/base/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f3139.json/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f3edf.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js
index 89794b9..bcf4607 100644
--- a/base/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f466a.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js
index 3b08027..e80ee0f 100644
--- a/base/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f6a65.json/default/TopLevel.js
@@ -224,7 +224,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -235,7 +235,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js
index f85b0f6..bdbb0dc 100644
--- a/base/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f74d5.json/default/TopLevel.js
@@ -223,7 +223,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -234,7 +234,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js
index f0c5302..2ca5f4b 100644
--- a/base/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f82d9.json/default/TopLevel.js
@@ -192,7 +192,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -203,7 +203,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js
index 639b694..dd4155e 100644
--- a/base/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/f974d.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js
index 2425915..75a5e56 100644
--- a/base/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/faff5.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js
index b7ca334..041eda2 100644
--- a/base/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/fcca3.json/default/TopLevel.js
@@ -320,7 +320,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -331,7 +331,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js b/head/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js
index 1eccbad..22f369c 100644
--- a/base/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/misc/fd329.json/default/TopLevel.js
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js
index 4486ec1..2aa5030 100644
--- a/base/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/blns-object.json/default/TopLevel.js
@@ -702,7 +702,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -713,7 +713,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js
index 6524a5e..3f6959b 100644
--- a/base/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2037.json/default/TopLevel.js
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js
index 7d43d7b..21f11dc 100644
--- a/base/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2521.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js
index 31d6694..0b93750 100644
--- a/base/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2590.json/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js
index b0f0629..5f3f0d6 100644
--- a/base/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2663.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js
index 40f8379..0263cfc 100644
--- a/base/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug2793.json/default/TopLevel.js
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js
index 87141a4..752a1c7 100644
--- a/base/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug427.json/default/TopLevel.js
@@ -718,7 +718,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -729,7 +729,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js
index 61aae0c..a653798 100644
--- a/base/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug790.json/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
index 9228688..0484f98 100644
--- a/base/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js
index 2d45f63..b279e5d 100644
--- a/base/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/bug863.json/default/TopLevel.js
@@ -193,7 +193,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -204,7 +204,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
index ce2c15a..1aac081 100644
--- a/base/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js
index 892898a..d38ad26 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/default/TopLevel.js
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index 8bdf8ea..934c304 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index 892898a..d38ad26 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index 892898a..d38ad26 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 3e621e4..26958d3 100644
--- a/base/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js
index 5199f24..c8ed5a7 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/default/TopLevel.js
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index c66bd33..43c7b65 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index 5199f24..c8ed5a7 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index 5199f24..c8ed5a7 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index e565a44..898833a 100644
--- a/base/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js
index a84f903..7aab8c3 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/default/TopLevel.js
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index 0be9d36..bc7ad49 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index a84f903..7aab8c3 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index a84f903..7aab8c3 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 1e61073..d8bc3d6 100644
--- a/base/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js
index fb135e5..5172ba0 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/default/TopLevel.js
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
index 4859842..177b92a 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.js
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js
index fb135e5..5172ba0 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.js
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
index fb135e5..5172ba0 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.js
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index ecd1d0c..36ce1d2 100644
--- a/base/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
index f1b13bb..422d447 100644
--- a/base/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
index 57ff834..93591c3 100644
--- a/base/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
index 3eb2ee8..06a1baf 100644
--- a/base/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js
index 7b97fb6..822c35a 100644
--- a/base/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/identifiers.json/default/TopLevel.js
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
index 3304381..c71f035 100644
--- a/base/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
index 57ef2c0..a894724 100644
--- a/base/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 4e3fa16..a3c10f1 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
@@ -690,7 +690,6 @@ export type Obj3 = {
     Locale:                     Locale;
     MapEntry:                   MapEntry;
     MarshalJSON:                MarshalJSON;
-    NO:                         No;
     dummy:                      number;
     goto:                       Goto;
     guard:                      Guard;
@@ -728,6 +727,7 @@ export type Obj3 = {
     list:                       List;
     lock:                       Lock;
     long:                       Long;
+    makeDictEncoder:            MakeDictEncoder;
     map:                        Map;
     metadata_property_handling: MetadataPropertyHandling;
     module:                     Module;
@@ -737,7 +737,6 @@ export type Obj3 = {
     native:                     Native;
     new:                        New;
     newtonsoft:                 Newtonsoft;
-    nil:                        Nil;
 };
 
 export type Hashable = {
@@ -812,10 +811,6 @@ export type MarshalJSON = {
     MarshalJSON: number;
 };
 
-export type No = {
-    NO: number;
-};
-
 export type Goto = {
     goto: number;
 };
@@ -960,6 +955,10 @@ export type Long = {
     long: number;
 };
 
+export type MakeDictEncoder = {
+    makeDictEncoder: number;
+};
+
 export type Map = {
     map: number;
 };
@@ -996,11 +995,8 @@ export type Newtonsoft = {
     newtonsoft: number;
 };
 
-export type Nil = {
-    nil: number;
-};
-
 export type Obj4 = {
+    NO:               No;
     NSError:          NSError;
     NSObject:         NSObject;
     NSString:         NSString;
@@ -1009,8 +1005,8 @@ export type Obj4 = {
     ObjectMapper:     ObjectMapper;
     Protocol:         Protocol;
     RegExp:           RegExpClass;
-    SEL:              Sel;
     dummy:            number;
+    nil:              Nil;
     noSuchMethod:     NoSuchMethod;
     noexcept:         Noexcept;
     nonatomic:        Nonatomic;
@@ -1065,7 +1061,10 @@ export type Obj4 = {
     runtimeType:      RuntimeType;
     s:                S;
     sbyte:            Sbyte;
-    sealed:           Sealed;
+};
+
+export type No = {
+    NO: number;
 };
 
 export type NSError = {
@@ -1100,8 +1099,8 @@ export type RegExpClass = {
     RegExp: string;
 };
 
-export type Sel = {
-    SEL: number;
+export type Nil = {
+    nil: number;
 };
 
 export type NoSuchMethod = {
@@ -1320,13 +1319,10 @@ export type Sbyte = {
     sbyte: number;
 };
 
-export type Sealed = {
-    sealed: number;
-};
-
 export type Obj5 = {
     KSerializer:        KSerializer;
     PrimitiveKind:      PrimitiveKind;
+    SEL:                Sel;
     Self:               Self;
     Sendable:           Sendable;
     SerialDescriptor:   SerialDescriptor;
@@ -1343,8 +1339,8 @@ export type Obj5 = {
     True:               True;
     Type:               Type;
     UnmarshalJSON:      UnmarshalJSON;
-    UseSerializers:     UseSerializers;
     dummy:              number;
+    sealed:             Sealed;
     select:             Select;
     self:               SelfClass;
     serialize:          Serialize;
@@ -1389,8 +1385,6 @@ export type Obj5 = {
     unchecked:          Unchecked;
     undefined:          Undefined;
     union:              Union;
-    unowned:            Unowned;
-    unsafe:             Unsafe;
 };
 
 export type KSerializer = {
@@ -1401,6 +1395,10 @@ export type PrimitiveKind = {
     PrimitiveKind: number;
 };
 
+export type Sel = {
+    SEL: number;
+};
+
 export type Self = {
     Self: number;
 };
@@ -1465,8 +1463,8 @@ export type UnmarshalJSON = {
     UnmarshalJSON: number;
 };
 
-export type UseSerializers = {
-    UseSerializers: number;
+export type Sealed = {
+    sealed: number;
 };
 
 export type Select = {
@@ -1645,20 +1643,15 @@ export type Union = {
     union: number;
 };
 
-export type Unowned = {
-    unowned: number;
-};
-
-export type Unsafe = {
-    unsafe: number;
-};
-
 export type Obj6 = {
     UUID:           UUID;
+    UseSerializers: UseSerializers;
     Utf8JsonReader: Utf8JSONReader;
     Utf8JsonWriter: Utf8JSONWriter;
     YES:            Yes;
     dummy:          number;
+    unowned:        Unowned;
+    unsafe:         Unsafe;
     unsigned:       Unsigned;
     ushort:         Ushort;
     using:          Using;
@@ -1681,6 +1674,10 @@ export type UUID = {
     UUID: number;
 };
 
+export type UseSerializers = {
+    UseSerializers: number;
+};
+
 export type Utf8JSONReader = {
     Utf8JsonReader: number;
 };
@@ -1693,6 +1690,14 @@ export type Yes = {
     YES: number;
 };
 
+export type Unowned = {
+    unowned: number;
+};
+
+export type Unsafe = {
+    unsafe: number;
+};
+
 export type Unsigned = {
     unsigned: number;
 };
@@ -1851,7 +1856,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -1862,7 +1867,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -2489,7 +2494,6 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "MarshalJSON", js: "MarshalJSON", typ: r("MarshalJSON") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
@@ -2527,6 +2531,7 @@ const typeMap: any = {
         { json: "list", js: "list", typ: r("List") },
         { json: "lock", js: "lock", typ: r("Lock") },
         { json: "long", js: "long", typ: r("Long") },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: r("MakeDictEncoder") },
         { json: "map", js: "map", typ: r("Map") },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: r("MetadataPropertyHandling") },
         { json: "module", js: "module", typ: r("Module") },
@@ -2536,7 +2541,6 @@ const typeMap: any = {
         { json: "native", js: "native", typ: r("Native") },
         { json: "new", js: "new", typ: r("New") },
         { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -2592,9 +2596,6 @@ const typeMap: any = {
     "MarshalJSON": o([
         { json: "MarshalJSON", js: "MarshalJSON", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
-    ], false),
     "Goto": o([
         { json: "goto", js: "goto", typ: i(0) },
     ], false),
@@ -2703,6 +2704,9 @@ const typeMap: any = {
     "Long": o([
         { json: "long", js: "long", typ: i(0) },
     ], false),
+    "MakeDictEncoder": o([
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: i(0) },
+    ], false),
     "Map": o([
         { json: "map", js: "map", typ: i(0) },
     ], false),
@@ -2730,10 +2734,8 @@ const typeMap: any = {
     "Newtonsoft": o([
         { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
     ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
@@ -2742,8 +2744,8 @@ const typeMap: any = {
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
         { 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: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
         { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
@@ -2798,7 +2800,9 @@ 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") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2824,8 +2828,8 @@ const typeMap: any = {
     "RegExpClass": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
@@ -2989,12 +2993,10 @@ const typeMap: any = {
     "Sbyte": o([
         { json: "sbyte", js: "sbyte", typ: i(0) },
     ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", 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") },
@@ -3011,8 +3013,8 @@ const typeMap: any = {
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: r("UnmarshalJSON") },
-        { 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") },
@@ -3057,8 +3059,6 @@ const typeMap: any = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -3066,6 +3066,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),
@@ -3114,8 +3117,8 @@ const typeMap: any = {
     "UnmarshalJSON": o([
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: i(0) },
     ], false),
-    "UseSerializers": o([
-        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
     ], false),
     "Select": o([
         { json: "select", js: "select", typ: i(0) },
@@ -3249,18 +3252,15 @@ const typeMap: any = {
     "Union": o([
         { json: "union", js: "union", typ: i(0) },
     ], false),
-    "Unowned": o([
-        { json: "unowned", js: "unowned", typ: i(0) },
-    ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
     "Obj6": o([
         { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
         { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "unowned", js: "unowned", typ: r("Unowned") },
+        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
         { json: "using", js: "using", typ: r("Using") },
@@ -3281,6 +3281,9 @@ const typeMap: any = {
     "UUID": o([
         { json: "UUID", js: "UUID", typ: i(0) },
     ], false),
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    ], false),
     "Utf8JSONReader": o([
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
     ], false),
@@ -3290,6 +3293,12 @@ const typeMap: any = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "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),
diff --git a/base/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
index f80ddb1..1909ad9 100644
--- a/base/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/list.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/list.json/default/TopLevel.js
index 46b9ee9..0280c74 100644
--- a/base/flow/test/inputs/json/priority/list.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/list.json/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js
index 26fd739..bdba130 100644
--- a/base/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/name-style.json/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
index bc67efb..5d938b7 100644
--- a/base/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
@@ -439,7 +439,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -450,7 +450,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
index 70f13bb..0e3d338 100644
--- a/base/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js
index a8973a2..39cc484 100644
--- a/base/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/no-classes.json/default/TopLevel.js
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
index 5f71ad1..72b4770 100644
--- a/base/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
@@ -247,7 +247,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -258,7 +258,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js
index cad18ef..30ae4d6 100644
--- a/base/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/number-map.json/default/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.js b/head/flow/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.js
index 99458a2..4095aa6 100644
--- a/base/flow/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
index 0273271..c086ed3 100644
--- a/base/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js
index 643d117..46ccba8 100644
--- a/base/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/optional-union.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
index 4e4662d..323c98f 100644
--- a/base/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js
index 8b5565e..4deac1c 100644
--- a/base/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/php-validation.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js
index 3e0e277..f68675a 100644
--- a/base/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/recursive.json/default/TopLevel.js
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -237,7 +237,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
index 4a7b9cd..d133076 100644
--- a/base/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
index a3987a9..d2e6730 100644
--- a/base/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/unions.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/unions.json/default/TopLevel.js
index 283c106..522a302 100644
--- a/base/flow/test/inputs/json/priority/unions.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/unions.json/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/url.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/url.json/default/TopLevel.js
index 4c1410e..e99ecd9 100644
--- a/base/flow/test/inputs/json/priority/url.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/url.json/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js
index ff9d6dd..f9ab3e8 100644
--- a/base/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/uuids.json/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
index 639b694..dd4155e 100644
--- a/base/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
index 9f7c83e..65a77d0 100644
--- a/base/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js
index 0a0728d..c79238c 100644
--- a/base/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/getting-started.json/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js
index f17022b..513f04a 100644
--- a/base/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/github-events.json/default/TopLevel.js
@@ -395,7 +395,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -406,7 +406,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
index 536024f..e823cd2 100644
--- a/base/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -150,7 +150,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js
index aacaf95..63d0123 100644
--- a/base/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/null-safe.json/default/TopLevel.js
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
index d7e76ba..e0052d5 100644
--- a/base/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js
index 74b9473..2f1fb91 100644
--- a/base/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/pokedex.json/default/TopLevel.js
@@ -159,7 +159,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -170,7 +170,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js
index 2f58942..24bb42e 100644
--- a/base/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/reddit.json/default/TopLevel.js
@@ -248,7 +248,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -259,7 +259,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js
index 381cd53..9c99e75 100644
--- a/base/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/simple-object.json/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/simple-object.json/readonly-true--24da4fc107df/TopLevel.js b/head/flow/test/inputs/json/samples/simple-object.json/readonly-true--24da4fc107df/TopLevel.js
index 561c3d7..0e2d545 100644
--- a/base/flow/test/inputs/json/samples/simple-object.json/readonly-true--24da4fc107df/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/simple-object.json/readonly-true--24da4fc107df/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
index 99106e9..cebdc47 100644
--- a/base/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
@@ -177,7 +177,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -188,7 +188,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
index 1eccbad..22f369c 100644
--- a/base/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js b/head/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js
index a439e02..316d1f8 100644
--- a/base/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/samples/us-senators.json/default/TopLevel.js
@@ -212,7 +212,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -223,7 +223,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 a60b41e..479df62 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
@@ -732,6 +732,7 @@ type Obj3 struct {
 	Locale                     Locale                     `json:"Locale"`
 	Lock                       Lock                       `json:"lock"`
 	Long                       Long                       `json:"long"`
+	MakeDictEncoder            MakeDictEncoder            `json:"makeDictEncoder"`
 	Map                        Map                        `json:"map"`
 	MapEntry                   MapEntry                   `json:"MapEntry"`
 	MarshalJSON                MarshalJSON                `json:"MarshalJSON"`
@@ -743,8 +744,6 @@ type Obj3 struct {
 	Native                     Native                     `json:"native"`
 	New                        New                        `json:"new"`
 	Newtonsoft                 Newtonsoft                 `json:"newtonsoft"`
-	Nil                        Nil                        `json:"nil"`
-	No                         No                         `json:"NO"`
 }
 
 type Goto struct {
@@ -955,6 +954,10 @@ type Long struct {
 	Long int64 `json:"long"`
 }
 
+type MakeDictEncoder struct {
+	MakeDictEncoder int64 `json:"makeDictEncoder"`
+}
+
 type Map struct {
 	Map int64 `json:"map"`
 }
@@ -999,19 +1002,13 @@ type Newtonsoft struct {
 	Newtonsoft int64 `json:"newtonsoft"`
 }
 
-type Nil struct {
-	Nil int64 `json:"nil"`
-}
-
-type No struct {
-	No int64 `json:"NO"`
-}
-
 type Obj4 struct {
 	Dummy           int64           `json:"dummy"`
 	NSError         NSError         `json:"NSError"`
 	NSObject        NSObject        `json:"NSObject"`
 	NSString        NSString        `json:"NSString"`
+	Nil             Nil             `json:"nil"`
+	No              No              `json:"NO"`
 	NoSuchMethod    NoSuchMethod    `json:"noSuchMethod"`
 	Noexcept        Noexcept        `json:"noexcept"`
 	Nonatomic       Nonatomic       `json:"nonatomic"`
@@ -1071,8 +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"`
 }
 
 type NSError struct {
@@ -1087,6 +1082,14 @@ type NSString struct {
 	NSString int64 `json:"NSString"`
 }
 
+type Nil struct {
+	Nil int64 `json:"nil"`
+}
+
+type No struct {
+	No int64 `json:"NO"`
+}
+
 type NoSuchMethod struct {
 	NoSuchMethod int64 `json:"noSuchMethod"`
 }
@@ -1323,14 +1326,6 @@ type Sbyte struct {
 	Sbyte int64 `json:"sbyte"`
 }
 
-type Sealed struct {
-	Sealed int64 `json:"sealed"`
-}
-
-type Sel struct {
-	Sel int64 `json:"SEL"`
-}
-
 type Obj5 struct {
 	Dummy              int64              `json:"dummy"`
 	KSerializer        KSerializer        `json:"KSerializer"`
@@ -1338,6 +1333,8 @@ 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"`
@@ -1395,9 +1392,6 @@ type Obj5 struct {
 	Undefined          Undefined          `json:"undefined"`
 	Union              Union              `json:"union"`
 	UnmarshalJSON      UnmarshalJSON      `json:"UnmarshalJSON"`
-	Unowned            Unowned            `json:"unowned"`
-	Unsafe             Unsafe             `json:"unsafe"`
-	UseSerializers     UseSerializers     `json:"UseSerializers"`
 }
 
 type KSerializer struct {
@@ -1420,6 +1414,14 @@ 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"`
 }
@@ -1648,22 +1650,13 @@ type UnmarshalJSON struct {
 	UnmarshalJSON int64 `json:"UnmarshalJSON"`
 }
 
-type Unowned struct {
-	Unowned int64 `json:"unowned"`
-}
-
-type Unsafe struct {
-	Unsafe int64 `json:"unsafe"`
-}
-
-type UseSerializers struct {
-	UseSerializers int64 `json:"UseSerializers"`
-}
-
 type Obj6 struct {
 	Dummy          int64          `json:"dummy"`
 	UUID           UUID           `json:"UUID"`
+	Unowned        Unowned        `json:"unowned"`
+	Unsafe         Unsafe         `json:"unsafe"`
 	Unsigned       Unsigned       `json:"unsigned"`
+	UseSerializers UseSerializers `json:"UseSerializers"`
 	Ushort         Ushort         `json:"ushort"`
 	Using          Using          `json:"using"`
 	Utf8JSONReader Utf8JSONReader `json:"Utf8JsonReader"`
@@ -1688,10 +1681,22 @@ type UUID struct {
 	UUID int64 `json:"UUID"`
 }
 
+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"`
 }
diff --git a/base/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js
index e0890fb..aa140fd 100644
--- a/base/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github1.graphql/default/TopLevel.js
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js
index 17c0615..970a805 100644
--- a/base/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github2.graphql/default/TopLevel.js
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -141,7 +141,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js
index 4e2fad5..a0a1eae 100644
--- a/base/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github3.graphql/default/TopLevel.js
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js
index 6970141..eff8131 100644
--- a/base/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github4.graphql/default/TopLevel.js
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -150,7 +150,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js
index 6f93b2c..17d7020 100644
--- a/base/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github5.graphql/default/TopLevel.js
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js
index 82910a8..3eec7e0 100644
--- a/base/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github6.graphql/default/TopLevel.js
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js
index 144e435..b30a466 100644
--- a/base/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github7.graphql/default/TopLevel.js
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js
index 0a8d281..7f153bb 100644
--- a/base/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github8.graphql/default/TopLevel.js
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js b/head/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js
index 4244d70..760d886 100644
--- a/base/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js
+++ b/head/graphql-flow/test/inputs/graphql/github9.graphql/default/TopLevel.js
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -150,7 +150,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js
index a908803..adda7dc 100644
--- a/base/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github1.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js
index 327d7fd..1326964 100644
--- a/base/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github2.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js
index 1f86530..74ffea9 100644
--- a/base/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github3.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js
index 9eae08b..aac5268 100644
--- a/base/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github4.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js
index 420ace9..621c2a3 100644
--- a/base/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github5.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js
index 15c6fba..4296f01 100644
--- a/base/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github6.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js
index 4249720..5fc3c12 100644
--- a/base/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github7.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js
index fd6d83e..1cfce39 100644
--- a/base/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github8.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js b/head/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js
index f9c07fe..bc93726 100644
--- a/base/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js
+++ b/head/graphql-javascript/test/inputs/graphql/github9.graphql/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts
index 578c5da..16124f1 100644
--- a/base/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github1.graphql/default/TopLevel.ts
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts
index c8dc669..3451109 100644
--- a/base/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github2.graphql/default/TopLevel.ts
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -141,7 +141,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts
index 3a9ea88..33e7581 100644
--- a/base/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github3.graphql/default/TopLevel.ts
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts
index 2365eaf..e7379b2 100644
--- a/base/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github4.graphql/default/TopLevel.ts
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts
index acdc9b7..5bf1752 100644
--- a/base/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github5.graphql/default/TopLevel.ts
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts
index 020032a..f146724 100644
--- a/base/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github6.graphql/default/TopLevel.ts
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts
index a0952a7..72a789e 100644
--- a/base/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github7.graphql/default/TopLevel.ts
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts
index 09a4037..4e38156 100644
--- a/base/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github8.graphql/default/TopLevel.ts
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -141,7 +141,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts b/head/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts
index 9d653c2..1d89aba 100644
--- a/base/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts
+++ b/head/graphql-typescript/test/inputs/graphql/github9.graphql/default/TopLevel.ts
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -144,7 +144,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 7542454..13b6413 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
@@ -180,6 +180,7 @@ module QuickType
     , Locale (..)
     , Lock (..)
     , Long (..)
+    , MakeDictEncoder (..)
     , MapClass (..)
     , MapEntry (..)
     , MarshalJSON (..)
@@ -190,8 +191,6 @@ module QuickType
     , Native (..)
     , New (..)
     , Newtonsoft (..)
-    , Nil (..)
-    , No (..)
     , ID (..)
     , If (..)
     , Import (..)
@@ -200,6 +199,8 @@ module QuickType
     , Let (..)
     , Module (..)
     , Obj4 (..)
+    , Nil (..)
+    , No (..)
     , NoSuchMethod (..)
     , Noexcept (..)
     , Nonatomic (..)
@@ -262,8 +263,6 @@ module QuickType
     , RuntimeType (..)
     , S (..)
     , Sbyte (..)
-    , Sealed (..)
-    , Sel (..)
     , Obj5 (..)
     , KSerializer (..)
     , SelfClass (..)
@@ -272,6 +271,8 @@ module QuickType
     , Type (..)
     , PrimitiveKind (..)
     , TypeClass (..)
+    , Sealed (..)
+    , Sel (..)
     , Select (..)
     , Self (..)
     , Sendable (..)
@@ -327,12 +328,12 @@ module QuickType
     , Undefined (..)
     , Union (..)
     , UnmarshalJSON (..)
-    , Unowned (..)
-    , Unsafe (..)
-    , UseSerializers (..)
     , Obj6 (..)
     , Where (..)
+    , Unowned (..)
+    , Unsafe (..)
     , Unsigned (..)
+    , UseSerializers (..)
     , Ushort (..)
     , Using (..)
     , Utf8JSONReader (..)
@@ -1072,6 +1073,7 @@ data Obj3 = Obj3
     , localeObj3 :: Locale
     , lockObj3 :: Lock
     , longObj3 :: Long
+    , makeDictEncoderObj3 :: MakeDictEncoder
     , mapObj3 :: MapClass
     , mapEntryObj3 :: MapEntry
     , marshalJSONObj3 :: MarshalJSON
@@ -1082,8 +1084,6 @@ data Obj3 = Obj3
     , nativeObj3 :: Native
     , newObj3 :: New
     , newtonsoftObj3 :: Newtonsoft
-    , nilObj3 :: Nil
-    , noObj3 :: No
     , obj3IDObj3 :: ID
     , obj3IfObj3 :: If
     , obj3ImportObj3 :: Import
@@ -1277,6 +1277,10 @@ data Long = Long
     { longLong :: Int
     } deriving (Show)
 
+data MakeDictEncoder = MakeDictEncoder
+    { makeDictEncoderMakeDictEncoder :: Int
+    } deriving (Show)
+
 data MapClass = MapClass
     { mapMapClass :: Int
     } deriving (Show)
@@ -1317,14 +1321,6 @@ data Newtonsoft = Newtonsoft
     { newtonsoftNewtonsoft :: Int
     } deriving (Show)
 
-data Nil = Nil
-    { nilNil :: Int
-    } deriving (Show)
-
-data No = No
-    { noNo :: Int
-    } deriving (Show)
-
 data ID = ID
     { idIDID :: Int
     } deriving (Show)
@@ -1355,6 +1351,8 @@ data Module = Module
 
 data Obj4 = Obj4
     { dummyObj4 :: Int
+    , nilObj4 :: Nil
+    , noObj4 :: No
     , noSuchMethodObj4 :: NoSuchMethod
     , noexceptObj4 :: Noexcept
     , nonatomicObj4 :: Nonatomic
@@ -1417,8 +1415,14 @@ data Obj4 = Obj4
     , runtimeTypeObj4 :: RuntimeType
     , sObj4 :: S
     , sbyteObj4 :: Sbyte
-    , sealedObj4 :: Sealed
-    , selObj4 :: Sel
+    } deriving (Show)
+
+data Nil = Nil
+    { nilNil :: Int
+    } deriving (Show)
+
+data No = No
+    { noNo :: Int
     } deriving (Show)
 
 data NoSuchMethod = NoSuchMethod
@@ -1669,14 +1673,6 @@ data Sbyte = Sbyte
     { sbyteSbyte :: Int
     } deriving (Show)
 
-data Sealed = Sealed
-    { sealedSealed :: Int
-    } deriving (Show)
-
-data Sel = Sel
-    { selSel :: Int
-    } deriving (Show)
-
 data Obj5 = Obj5
     { dummyObj5 :: Int
     , kSerializerObj5 :: KSerializer
@@ -1686,6 +1682,8 @@ data Obj5 = Obj5
     , obj5TypeObj5 :: Type
     , primitiveKindObj5 :: PrimitiveKind
     , purpleTypeObj5 :: TypeClass
+    , sealedObj5 :: Sealed
+    , selObj5 :: Sel
     , selectObj5 :: Select
     , selfObj5 :: Self
     , sendableObj5 :: Sendable
@@ -1741,9 +1739,6 @@ data Obj5 = Obj5
     , undefinedObj5 :: Undefined
     , unionObj5 :: Union
     , unmarshalJSONObj5 :: UnmarshalJSON
-    , unownedObj5 :: Unowned
-    , unsafeObj5 :: Unsafe
-    , useSerializersObj5 :: UseSerializers
     } deriving (Show)
 
 data KSerializer = KSerializer
@@ -1774,6 +1769,14 @@ 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)
@@ -1994,22 +1997,13 @@ data UnmarshalJSON = UnmarshalJSON
     { unmarshalJSONUnmarshalJSON :: Int
     } deriving (Show)
 
-data Unowned = Unowned
-    { unownedUnowned :: Int
-    } deriving (Show)
-
-data Unsafe = Unsafe
-    { unsafeUnsafe :: Int
-    } deriving (Show)
-
-data UseSerializers = UseSerializers
-    { useSerializersUseSerializers :: Int
-    } deriving (Show)
-
 data Obj6 = Obj6
     { dummyObj6 :: Int
     , obj6WhereObj6 :: Where
+    , unownedObj6 :: Unowned
+    , unsafeObj6 :: Unsafe
     , unsignedObj6 :: Unsigned
+    , useSerializersObj6 :: UseSerializers
     , ushortObj6 :: Ushort
     , usingObj6 :: Using
     , utf8JSONReaderObj6 :: Utf8JSONReader
@@ -2034,10 +2028,22 @@ data Where = Where
     { whereWhereWhere :: Int
     } deriving (Show)
 
+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)
@@ -3702,7 +3708,7 @@ instance FromJSON Obj2False where
         <$> v .: "false"
 
 instance ToJSON Obj3 where
-    toJSON (Obj3 dummyObj3 gotoObj3 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 marshalJSONObj3 metadataPropertyHandlingObj3 mutableObj3 mutatingObj3 namespaceObj3 nativeObj3 newObj3 newtonsoftObj3 nilObj3 noObj3 obj3IDObj3 obj3IfObj3 obj3ImportObj3 obj3InObj3 obj3InfixObj3 obj3LetObj3 obj3ModuleObj3) =
+    toJSON (Obj3 dummyObj3 gotoObj3 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 makeDictEncoderObj3 mapObj3 mapEntryObj3 marshalJSONObj3 metadataPropertyHandlingObj3 mutableObj3 mutatingObj3 namespaceObj3 nativeObj3 newObj3 newtonsoftObj3 obj3IDObj3 obj3IfObj3 obj3ImportObj3 obj3InObj3 obj3InfixObj3 obj3LetObj3 obj3ModuleObj3) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj3
         , Just $ "goto" .= gotoObj3
@@ -3751,6 +3757,7 @@ instance ToJSON Obj3 where
         , Just $ "Locale" .= localeObj3
         , Just $ "lock" .= lockObj3
         , Just $ "long" .= longObj3
+        , Just $ "makeDictEncoder" .= makeDictEncoderObj3
         , Just $ "map" .= mapObj3
         , Just $ "MapEntry" .= mapEntryObj3
         , Just $ "MarshalJSON" .= marshalJSONObj3
@@ -3761,8 +3768,6 @@ instance ToJSON Obj3 where
         , Just $ "native" .= nativeObj3
         , Just $ "new" .= newObj3
         , Just $ "newtonsoft" .= newtonsoftObj3
-        , Just $ "nil" .= nilObj3
-        , Just $ "NO" .= noObj3
         , Just $ "id" .= obj3IDObj3
         , Just $ "if" .= obj3IfObj3
         , Just $ "import" .= obj3ImportObj3
@@ -3821,6 +3826,7 @@ instance FromJSON Obj3 where
         <*> v .: "Locale"
         <*> v .: "lock"
         <*> v .: "long"
+        <*> v .: "makeDictEncoder"
         <*> v .: "map"
         <*> v .: "MapEntry"
         <*> v .: "MarshalJSON"
@@ -3831,8 +3837,6 @@ instance FromJSON Obj3 where
         <*> v .: "native"
         <*> v .: "new"
         <*> v .: "newtonsoft"
-        <*> v .: "nil"
-        <*> v .: "NO"
         <*> v .: "id"
         <*> v .: "if"
         <*> v .: "import"
@@ -4301,6 +4305,16 @@ instance FromJSON Long where
     parseJSON (Object v) = Long
         <$> v .: "long"
 
+instance ToJSON MakeDictEncoder where
+    toJSON (MakeDictEncoder makeDictEncoderMakeDictEncoder) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "makeDictEncoder" .= makeDictEncoderMakeDictEncoder
+        ]
+
+instance FromJSON MakeDictEncoder where
+    parseJSON (Object v) = MakeDictEncoder
+        <$> v .: "makeDictEncoder"
+
 instance ToJSON MapClass where
     toJSON (MapClass mapMapClass) =
         object $ foldMap (maybe [] pure)
@@ -4401,26 +4415,6 @@ instance FromJSON Newtonsoft where
     parseJSON (Object v) = Newtonsoft
         <$> v .: "newtonsoft"
 
-instance ToJSON Nil where
-    toJSON (Nil nilNil) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "nil" .= nilNil
-        ]
-
-instance FromJSON Nil where
-    parseJSON (Object v) = Nil
-        <$> v .: "nil"
-
-instance ToJSON No where
-    toJSON (No noNo) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "NO" .= noNo
-        ]
-
-instance FromJSON No where
-    parseJSON (Object v) = No
-        <$> v .: "NO"
-
 instance ToJSON ID where
     toJSON (ID idIDID) =
         object $ foldMap (maybe [] pure)
@@ -4492,9 +4486,11 @@ instance FromJSON Module where
         <$> v .: "module"
 
 instance ToJSON Obj4 where
-    toJSON (Obj4 dummyObj4 noSuchMethodObj4 noexceptObj4 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) =
+    toJSON (Obj4 dummyObj4 nilObj4 noObj4 noSuchMethodObj4 noexceptObj4 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) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj4
+        , Just $ "nil" .= nilObj4
+        , Just $ "NO" .= noObj4
         , Just $ "noSuchMethod" .= noSuchMethodObj4
         , Just $ "noexcept" .= noexceptObj4
         , Just $ "nonatomic" .= nonatomicObj4
@@ -4557,13 +4553,13 @@ instance ToJSON Obj4 where
         , Just $ "runtimeType" .= runtimeTypeObj4
         , Just $ "s" .= sObj4
         , Just $ "sbyte" .= sbyteObj4
-        , Just $ "sealed" .= sealedObj4
-        , Just $ "SEL" .= selObj4
         ]
 
 instance FromJSON Obj4 where
     parseJSON (Object v) = Obj4
         <$> v .: "dummy"
+        <*> v .: "nil"
+        <*> v .: "NO"
         <*> v .: "noSuchMethod"
         <*> v .: "noexcept"
         <*> v .: "nonatomic"
@@ -4626,8 +4622,26 @@ instance FromJSON Obj4 where
         <*> v .: "runtimeType"
         <*> v .: "s"
         <*> v .: "sbyte"
-        <*> v .: "sealed"
-        <*> v .: "SEL"
+
+instance ToJSON Nil where
+    toJSON (Nil nilNil) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "nil" .= nilNil
+        ]
+
+instance FromJSON Nil where
+    parseJSON (Object v) = Nil
+        <$> v .: "nil"
+
+instance ToJSON No where
+    toJSON (No noNo) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "NO" .= noNo
+        ]
+
+instance FromJSON No where
+    parseJSON (Object v) = No
+        <$> v .: "NO"
 
 instance ToJSON NoSuchMethod where
     toJSON (NoSuchMethod noSuchMethodNoSuchMethod) =
@@ -5249,28 +5263,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 Obj5 where
-    toJSON (Obj5 dummyObj5 kSerializerObj5 obj5SelfObj5 obj5ThenObj5 obj5TrueObj5 obj5TypeObj5 primitiveKindObj5 purpleTypeObj5 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 toDictObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5 unmarshalJSONObj5 unownedObj5 unsafeObj5 useSerializersObj5) =
+    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 toDictObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5 unmarshalJSONObj5) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj5
         , Just $ "KSerializer" .= kSerializerObj5
@@ -5280,6 +5274,8 @@ 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
@@ -5335,9 +5331,6 @@ instance ToJSON Obj5 where
         , Just $ "undefined" .= undefinedObj5
         , Just $ "union" .= unionObj5
         , Just $ "UnmarshalJSON" .= unmarshalJSONObj5
-        , Just $ "unowned" .= unownedObj5
-        , Just $ "unsafe" .= unsafeObj5
-        , Just $ "UseSerializers" .= useSerializersObj5
         ]
 
 instance FromJSON Obj5 where
@@ -5350,6 +5343,8 @@ instance FromJSON Obj5 where
         <*> v .: "Type"
         <*> v .: "PrimitiveKind"
         <*> v .: "type"
+        <*> v .: "sealed"
+        <*> v .: "SEL"
         <*> v .: "select"
         <*> v .: "Self"
         <*> v .: "Sendable"
@@ -5405,9 +5400,6 @@ instance FromJSON Obj5 where
         <*> v .: "undefined"
         <*> v .: "union"
         <*> v .: "UnmarshalJSON"
-        <*> v .: "unowned"
-        <*> v .: "unsafe"
-        <*> v .: "UseSerializers"
 
 instance ToJSON KSerializer where
     toJSON (KSerializer kSerializerKSerializer) =
@@ -5479,6 +5471,26 @@ 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)
@@ -6029,42 +6041,15 @@ instance FromJSON UnmarshalJSON where
     parseJSON (Object v) = UnmarshalJSON
         <$> v .: "UnmarshalJSON"
 
-instance ToJSON Unowned where
-    toJSON (Unowned unownedUnowned) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "unowned" .= unownedUnowned
-        ]
-
-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 UseSerializers where
-    toJSON (UseSerializers useSerializersUseSerializers) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "UseSerializers" .= useSerializersUseSerializers
-        ]
-
-instance FromJSON UseSerializers where
-    parseJSON (Object v) = UseSerializers
-        <$> v .: "UseSerializers"
-
 instance ToJSON Obj6 where
-    toJSON (Obj6 dummyObj6 obj6WhereObj6 unsignedObj6 ushortObj6 usingObj6 utf8JSONReaderObj6 utf8JSONWriterObj6 uuidObj6 varObj6 virtualObj6 voidObj6 volatileObj6 wcharTObj6 weakObj6 whileObj6 willSetObj6 withObj6 xorObj6 xorEqObj6 yesObj6 yieldObj6) =
+    toJSON (Obj6 dummyObj6 obj6WhereObj6 unownedObj6 unsafeObj6 unsignedObj6 useSerializersObj6 ushortObj6 usingObj6 utf8JSONReaderObj6 utf8JSONWriterObj6 uuidObj6 varObj6 virtualObj6 voidObj6 volatileObj6 wcharTObj6 weakObj6 whileObj6 willSetObj6 withObj6 xorObj6 xorEqObj6 yesObj6 yieldObj6) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj6
         , Just $ "where" .= obj6WhereObj6
+        , Just $ "unowned" .= unownedObj6
+        , Just $ "unsafe" .= unsafeObj6
         , Just $ "unsigned" .= unsignedObj6
+        , Just $ "UseSerializers" .= useSerializersObj6
         , Just $ "ushort" .= ushortObj6
         , Just $ "using" .= usingObj6
         , Just $ "Utf8JsonReader" .= utf8JSONReaderObj6
@@ -6089,7 +6074,10 @@ instance FromJSON Obj6 where
     parseJSON (Object v) = Obj6
         <$> v .: "dummy"
         <*> v .: "where"
+        <*> v .: "unowned"
+        <*> v .: "unsafe"
         <*> v .: "unsigned"
+        <*> v .: "UseSerializers"
         <*> v .: "ushort"
         <*> v .: "using"
         <*> v .: "Utf8JsonReader"
@@ -6119,6 +6107,26 @@ instance FromJSON Where where
     parseJSON (Object v) = Where
         <$> v .: "where"
 
+instance ToJSON Unowned where
+    toJSON (Unowned unownedUnowned) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "unowned" .= unownedUnowned
+        ]
+
+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)
@@ -6129,6 +6137,16 @@ instance FromJSON Unsigned where
     parseJSON (Object v) = Unsigned
         <$> v .: "unsigned"
 
+instance ToJSON UseSerializers where
+    toJSON (UseSerializers useSerializersUseSerializers) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "UseSerializers" .= useSerializersUseSerializers
+        ]
+
+instance FromJSON UseSerializers where
+    parseJSON (Object v) = UseSerializers
+        <$> v .: "UseSerializers"
+
 instance ToJSON Ushort where
     toJSON (Ushort ushortUshort) =
         object $ foldMap (maybe [] pure)
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java
new file mode 100644
index 0000000..bba15e9
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class MakeDictEncoder {
+    private long makeDictEncoder;
+
+    @JsonProperty("makeDictEncoder")
+    public long getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(long value) { this.makeDictEncoder = 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 e49f07b..a15942d 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
@@ -48,6 +48,7 @@ public class Obj3 {
     private ListClass list;
     private Locale locale;
     private Lock lock;
+    private MakeDictEncoder makeDictEncoder;
     private MapClass map;
     private MapEntry mapEntry;
     private MarshalJSON marshalJSON;
@@ -57,8 +58,6 @@ public class Obj3 {
     private Mutating mutating;
     private Namespace namespace;
     private Newtonsoft newtonsoft;
-    private Nil nil;
-    private No no;
     private Goto obj3Goto;
     private If obj3If;
     private Implements obj3Implements;
@@ -295,6 +294,11 @@ public class Obj3 {
     @JsonProperty("lock")
     public void setLock(Lock value) { this.lock = value; }
 
+    @JsonProperty("makeDictEncoder")
+    public MakeDictEncoder getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(MakeDictEncoder value) { this.makeDictEncoder = value; }
+
     @JsonProperty("map")
     public MapClass getMap() { return map; }
     @JsonProperty("map")
@@ -340,16 +344,6 @@ public class Obj3 {
     @JsonProperty("newtonsoft")
     public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
 
-    @JsonProperty("nil")
-    public Nil getNil() { return nil; }
-    @JsonProperty("nil")
-    public void setNil(Nil value) { this.nil = value; }
-
-    @JsonProperty("NO")
-    public No getNo() { return no; }
-    @JsonProperty("NO")
-    public void setNo(No value) { this.no = value; }
-
     @JsonProperty("goto")
     public Goto getObj3Goto() { return obj3Goto; }
     @JsonProperty("goto")
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 5042a3c..68d64c3 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj4 {
     private long dummy;
+    private Nil nil;
+    private No no;
     private NoSuchMethod noSuchMethod;
     private Noexcept noexcept;
     private Nonatomic nonatomic;
@@ -66,14 +68,22 @@ public class Obj4 {
     private RuntimeType runtimeType;
     private S s;
     private Sbyte sbyte;
-    private Sealed sealed;
-    private Sel sel;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("nil")
+    public Nil getNil() { return nil; }
+    @JsonProperty("nil")
+    public void setNil(Nil value) { this.nil = value; }
+
+    @JsonProperty("NO")
+    public No getNo() { return no; }
+    @JsonProperty("NO")
+    public void setNo(No value) { this.no = value; }
+
     @JsonProperty("noSuchMethod")
     public NoSuchMethod getNoSuchMethod() { return noSuchMethod; }
     @JsonProperty("noSuchMethod")
@@ -383,14 +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; }
 }
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 5539fb2..c1d4abf 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,8 @@ 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;
@@ -66,9 +68,6 @@ public class Obj5 {
     private Undefined undefined;
     private Union union;
     private UnmarshalJSON unmarshalJSON;
-    private Unowned unowned;
-    private Unsafe unsafe;
-    private UseSerializers useSerializers;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
@@ -160,6 +159,16 @@ 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")
@@ -384,19 +393,4 @@ public class Obj5 {
     public UnmarshalJSON getUnmarshalJSON() { return unmarshalJSON; }
     @JsonProperty("UnmarshalJSON")
     public void setUnmarshalJSON(UnmarshalJSON value) { this.unmarshalJSON = value; }
-
-    @JsonProperty("unowned")
-    public Unowned getUnowned() { return unowned; }
-    @JsonProperty("unowned")
-    public void setUnowned(Unowned value) { this.unowned = value; }
-
-    @JsonProperty("unsafe")
-    public Unsafe getUnsafe() { return unsafe; }
-    @JsonProperty("unsafe")
-    public void setUnsafe(Unsafe value) { this.unsafe = value; }
-
-    @JsonProperty("UseSerializers")
-    public UseSerializers getUseSerializers() { return useSerializers; }
-    @JsonProperty("UseSerializers")
-    public void setUseSerializers(UseSerializers value) { this.useSerializers = 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 6b9909d..f7935ed 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,7 +7,10 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unowned unowned;
+    private Unsafe unsafe;
     private Unsigned unsigned;
+    private UseSerializers useSerializers;
     private Ushort ushort;
     private Using using;
     private Utf8JSONReader utf8JSONReader;
@@ -45,11 +48,26 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("unowned")
+    public Unowned getUnowned() { return unowned; }
+    @JsonProperty("unowned")
+    public void setUnowned(Unowned value) { this.unowned = value; }
+
+    @JsonProperty("unsafe")
+    public Unsafe getUnsafe() { return unsafe; }
+    @JsonProperty("unsafe")
+    public void setUnsafe(Unsafe value) { this.unsafe = value; }
+
     @JsonProperty("unsigned")
     public Unsigned getUnsigned() { return unsigned; }
     @JsonProperty("unsigned")
     public void setUnsigned(Unsigned value) { this.unsigned = value; }
 
+    @JsonProperty("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")
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java
new file mode 100644
index 0000000..bba15e9
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class MakeDictEncoder {
+    private long makeDictEncoder;
+
+    @JsonProperty("makeDictEncoder")
+    public long getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(long value) { this.makeDictEncoder = 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 e49f07b..a15942d 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
@@ -48,6 +48,7 @@ public class Obj3 {
     private ListClass list;
     private Locale locale;
     private Lock lock;
+    private MakeDictEncoder makeDictEncoder;
     private MapClass map;
     private MapEntry mapEntry;
     private MarshalJSON marshalJSON;
@@ -57,8 +58,6 @@ public class Obj3 {
     private Mutating mutating;
     private Namespace namespace;
     private Newtonsoft newtonsoft;
-    private Nil nil;
-    private No no;
     private Goto obj3Goto;
     private If obj3If;
     private Implements obj3Implements;
@@ -295,6 +294,11 @@ public class Obj3 {
     @JsonProperty("lock")
     public void setLock(Lock value) { this.lock = value; }
 
+    @JsonProperty("makeDictEncoder")
+    public MakeDictEncoder getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(MakeDictEncoder value) { this.makeDictEncoder = value; }
+
     @JsonProperty("map")
     public MapClass getMap() { return map; }
     @JsonProperty("map")
@@ -340,16 +344,6 @@ public class Obj3 {
     @JsonProperty("newtonsoft")
     public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
 
-    @JsonProperty("nil")
-    public Nil getNil() { return nil; }
-    @JsonProperty("nil")
-    public void setNil(Nil value) { this.nil = value; }
-
-    @JsonProperty("NO")
-    public No getNo() { return no; }
-    @JsonProperty("NO")
-    public void setNo(No value) { this.no = value; }
-
     @JsonProperty("goto")
     public Goto getObj3Goto() { return obj3Goto; }
     @JsonProperty("goto")
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 5042a3c..68d64c3 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj4 {
     private long dummy;
+    private Nil nil;
+    private No no;
     private NoSuchMethod noSuchMethod;
     private Noexcept noexcept;
     private Nonatomic nonatomic;
@@ -66,14 +68,22 @@ public class Obj4 {
     private RuntimeType runtimeType;
     private S s;
     private Sbyte sbyte;
-    private Sealed sealed;
-    private Sel sel;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("nil")
+    public Nil getNil() { return nil; }
+    @JsonProperty("nil")
+    public void setNil(Nil value) { this.nil = value; }
+
+    @JsonProperty("NO")
+    public No getNo() { return no; }
+    @JsonProperty("NO")
+    public void setNo(No value) { this.no = value; }
+
     @JsonProperty("noSuchMethod")
     public NoSuchMethod getNoSuchMethod() { return noSuchMethod; }
     @JsonProperty("noSuchMethod")
@@ -383,14 +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; }
 }
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 5539fb2..c1d4abf 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,8 @@ 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;
@@ -66,9 +68,6 @@ public class Obj5 {
     private Undefined undefined;
     private Union union;
     private UnmarshalJSON unmarshalJSON;
-    private Unowned unowned;
-    private Unsafe unsafe;
-    private UseSerializers useSerializers;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
@@ -160,6 +159,16 @@ 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")
@@ -384,19 +393,4 @@ public class Obj5 {
     public UnmarshalJSON getUnmarshalJSON() { return unmarshalJSON; }
     @JsonProperty("UnmarshalJSON")
     public void setUnmarshalJSON(UnmarshalJSON value) { this.unmarshalJSON = value; }
-
-    @JsonProperty("unowned")
-    public Unowned getUnowned() { return unowned; }
-    @JsonProperty("unowned")
-    public void setUnowned(Unowned value) { this.unowned = value; }
-
-    @JsonProperty("unsafe")
-    public Unsafe getUnsafe() { return unsafe; }
-    @JsonProperty("unsafe")
-    public void setUnsafe(Unsafe value) { this.unsafe = value; }
-
-    @JsonProperty("UseSerializers")
-    public UseSerializers getUseSerializers() { return useSerializers; }
-    @JsonProperty("UseSerializers")
-    public void setUseSerializers(UseSerializers value) { this.useSerializers = 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 6b9909d..f7935ed 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,7 +7,10 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unowned unowned;
+    private Unsafe unsafe;
     private Unsigned unsigned;
+    private UseSerializers useSerializers;
     private Ushort ushort;
     private Using using;
     private Utf8JSONReader utf8JSONReader;
@@ -45,11 +48,26 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("unowned")
+    public Unowned getUnowned() { return unowned; }
+    @JsonProperty("unowned")
+    public void setUnowned(Unowned value) { this.unowned = value; }
+
+    @JsonProperty("unsafe")
+    public Unsafe getUnsafe() { return unsafe; }
+    @JsonProperty("unsafe")
+    public void setUnsafe(Unsafe value) { this.unsafe = value; }
+
     @JsonProperty("unsigned")
     public Unsigned getUnsigned() { return unsigned; }
     @JsonProperty("unsigned")
     public void setUnsigned(Unsigned value) { this.unsigned = value; }
 
+    @JsonProperty("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")
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java
new file mode 100644
index 0000000..bba15e9
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/MakeDictEncoder.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class MakeDictEncoder {
+    private long makeDictEncoder;
+
+    @JsonProperty("makeDictEncoder")
+    public long getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(long value) { this.makeDictEncoder = 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 e49f07b..a15942d 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
@@ -48,6 +48,7 @@ public class Obj3 {
     private ListClass list;
     private Locale locale;
     private Lock lock;
+    private MakeDictEncoder makeDictEncoder;
     private MapClass map;
     private MapEntry mapEntry;
     private MarshalJSON marshalJSON;
@@ -57,8 +58,6 @@ public class Obj3 {
     private Mutating mutating;
     private Namespace namespace;
     private Newtonsoft newtonsoft;
-    private Nil nil;
-    private No no;
     private Goto obj3Goto;
     private If obj3If;
     private Implements obj3Implements;
@@ -295,6 +294,11 @@ public class Obj3 {
     @JsonProperty("lock")
     public void setLock(Lock value) { this.lock = value; }
 
+    @JsonProperty("makeDictEncoder")
+    public MakeDictEncoder getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(MakeDictEncoder value) { this.makeDictEncoder = value; }
+
     @JsonProperty("map")
     public MapClass getMap() { return map; }
     @JsonProperty("map")
@@ -340,16 +344,6 @@ public class Obj3 {
     @JsonProperty("newtonsoft")
     public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
 
-    @JsonProperty("nil")
-    public Nil getNil() { return nil; }
-    @JsonProperty("nil")
-    public void setNil(Nil value) { this.nil = value; }
-
-    @JsonProperty("NO")
-    public No getNo() { return no; }
-    @JsonProperty("NO")
-    public void setNo(No value) { this.no = value; }
-
     @JsonProperty("goto")
     public Goto getObj3Goto() { return obj3Goto; }
     @JsonProperty("goto")
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 5042a3c..68d64c3 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj4 {
     private long dummy;
+    private Nil nil;
+    private No no;
     private NoSuchMethod noSuchMethod;
     private Noexcept noexcept;
     private Nonatomic nonatomic;
@@ -66,14 +68,22 @@ public class Obj4 {
     private RuntimeType runtimeType;
     private S s;
     private Sbyte sbyte;
-    private Sealed sealed;
-    private Sel sel;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("nil")
+    public Nil getNil() { return nil; }
+    @JsonProperty("nil")
+    public void setNil(Nil value) { this.nil = value; }
+
+    @JsonProperty("NO")
+    public No getNo() { return no; }
+    @JsonProperty("NO")
+    public void setNo(No value) { this.no = value; }
+
     @JsonProperty("noSuchMethod")
     public NoSuchMethod getNoSuchMethod() { return noSuchMethod; }
     @JsonProperty("noSuchMethod")
@@ -383,14 +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; }
 }
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 5539fb2..c1d4abf 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,8 @@ 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;
@@ -66,9 +68,6 @@ public class Obj5 {
     private Undefined undefined;
     private Union union;
     private UnmarshalJSON unmarshalJSON;
-    private Unowned unowned;
-    private Unsafe unsafe;
-    private UseSerializers useSerializers;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
@@ -160,6 +159,16 @@ 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")
@@ -384,19 +393,4 @@ public class Obj5 {
     public UnmarshalJSON getUnmarshalJSON() { return unmarshalJSON; }
     @JsonProperty("UnmarshalJSON")
     public void setUnmarshalJSON(UnmarshalJSON value) { this.unmarshalJSON = value; }
-
-    @JsonProperty("unowned")
-    public Unowned getUnowned() { return unowned; }
-    @JsonProperty("unowned")
-    public void setUnowned(Unowned value) { this.unowned = value; }
-
-    @JsonProperty("unsafe")
-    public Unsafe getUnsafe() { return unsafe; }
-    @JsonProperty("unsafe")
-    public void setUnsafe(Unsafe value) { this.unsafe = value; }
-
-    @JsonProperty("UseSerializers")
-    public UseSerializers getUseSerializers() { return useSerializers; }
-    @JsonProperty("UseSerializers")
-    public void setUseSerializers(UseSerializers value) { this.useSerializers = 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 6b9909d..f7935ed 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,7 +7,10 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unowned unowned;
+    private Unsafe unsafe;
     private Unsigned unsigned;
+    private UseSerializers useSerializers;
     private Ushort ushort;
     private Using using;
     private Utf8JSONReader utf8JSONReader;
@@ -45,11 +48,26 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("unowned")
+    public Unowned getUnowned() { return unowned; }
+    @JsonProperty("unowned")
+    public void setUnowned(Unowned value) { this.unowned = value; }
+
+    @JsonProperty("unsafe")
+    public Unsafe getUnsafe() { return unsafe; }
+    @JsonProperty("unsafe")
+    public void setUnsafe(Unsafe value) { this.unsafe = value; }
+
     @JsonProperty("unsigned")
     public Unsigned getUnsigned() { return unsigned; }
     @JsonProperty("unsigned")
     public void setUnsigned(Unsigned value) { this.unsigned = value; }
 
+    @JsonProperty("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")
diff --git a/base/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js
index 7bde2a3..a0d11c8 100644
--- a/base/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/00c36.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js
index e58994e..8e48e5e 100644
--- a/base/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/00ec5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/010b1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/016af.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/033b1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js
index b031cf3..fb642f7 100644
--- a/base/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/050b0.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js
index 4ed3634..c9e01ac 100644
--- a/base/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/06bee.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js
index ae8169d..79cbb0a 100644
--- a/base/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/07540.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0779f.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js
index 8c10240..3eba7b9 100644
--- a/base/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/07c75.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js
index d23e2d7..eb82c03 100644
--- a/base/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/09f54.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js
index cc5cbe0..8000c5f 100644
--- a/base/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0a358.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js
index 874e0da..49aad5c 100644
--- a/base/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0a91a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js
index 3b6f02b..28ede7a 100644
--- a/base/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0b91a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js
index 4921f33..dc4294c 100644
--- a/base/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0cffa.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
index d74c94d..c741d40 100644
--- a/base/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0e0c2.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js
index c350529..24f3782 100644
--- a/base/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/0fecf.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js
index 0f11bea..12ba177 100644
--- a/base/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/10be4.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js
index 988b2e3..b56d621 100644
--- a/base/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/112b5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js
index 5029be5..72c9c86 100644
--- a/base/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/127a1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js
index 1804248..00b4f10 100644
--- a/base/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/13d8d.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js
index 5d15cc8..c4cc35e 100644
--- a/base/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/14d38.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/167d6.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/16bc5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js
index 351e84a..3f2aa62 100644
--- a/base/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/176f1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/1a7f5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/1b28c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js
index 8192aa5..47aaa20 100644
--- a/base/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/1b409.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js
index 6a33ed2..81402e2 100644
--- a/base/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/2465e.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/24f52.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js
index fdbfeea..ab64fd6 100644
--- a/base/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/262f0.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js
index ca1a4e9..e4ca4cb 100644
--- a/base/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/26b49.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js
index 9ef5a1a..b502e49 100644
--- a/base/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/26c9c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js
index 06e876f..be03980 100644
--- a/base/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/27332.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js
index a46f0c7..ff1703e 100644
--- a/base/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/29f47.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
index dabaf9d..04b2a37 100644
--- a/base/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/2d4e2.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js
index 5fc4099..e4ba9bb 100644
--- a/base/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/2df80.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js
index d0130c4..468f73b 100644
--- a/base/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/31189.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js
index 59f34aa..8574865 100644
--- a/base/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/32431.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js
index 6f852a2..d7f5885 100644
--- a/base/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/32d5c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js
index 68c9784..c2906b6 100644
--- a/base/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/337ed.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js
index 6d3e524..7def82c 100644
--- a/base/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/33d2e.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js
index f70dc0b..9d11a02 100644
--- a/base/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/34702.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js
index 5fc3e3b..09afdf9 100644
--- a/base/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3536b.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3659d.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/36d5d.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3a6b3.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
index 351e84a..3f2aa62 100644
--- a/base/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3e9a3.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
index b6b4271..9407f27 100644
--- a/base/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/3f1ce.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js
index e80c8de..67e2770 100644
--- a/base/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/421d4.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js
index 0c1fbce..bb05c0f 100644
--- a/base/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/437e7.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js
index 4e4bfd1..ff817c6 100644
--- a/base/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/43970.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/43eaf.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js
index 0899bf9..2785ed7 100644
--- a/base/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/458db.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4961a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4a0d7.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js
index 405a535..1b32e84 100644
--- a/base/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4a455.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4c547.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
index e8d6e16..339cca8 100644
--- a/base/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4d6fb.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/4e336.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js
index 8f17e68..383e402 100644
--- a/base/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/54147.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js
index d676c8d..8fa6866 100644
--- a/base/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/54d32.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js
index 6ecbade..14b561c 100644
--- a/base/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/570ec.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5dd0d.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js
index f49ab65..81624a8 100644
--- a/base/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5eae5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5eb20.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5f3a1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
index 69bd742..3ce68b1 100644
--- a/base/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/5f7fe.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js
index c7de983..b06641f 100644
--- a/base/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/617e8.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/61b66.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6260a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js
index 5747bf4..5f3d0a5 100644
--- a/base/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/65dec.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js
index 6b45478..1d77f00 100644
--- a/base/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/66121.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js
index c893589..ccdfbc7 100644
--- a/base/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6617c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js
index 8cc7071..ba08d4f 100644
--- a/base/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/67c03.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js
index 0e491bb..0013ca4 100644
--- a/base/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/68c30.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js
index 787e7f9..b3178f9 100644
--- a/base/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6c155.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js
index bcdf20d..e617e3a 100644
--- a/base/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6de06.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js
index c65a864..c893c70 100644
--- a/base/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6dec6.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js
index 7d4472c..426f04a 100644
--- a/base/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/6eb00.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/70c77.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js
index 2dd7df3..aaa9476 100644
--- a/base/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/734ad.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/75912.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js
index c3f9405..414c291 100644
--- a/base/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7681c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js
index 177fff6..f84b686 100644
--- a/base/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/76ae1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js
index ad4ed63..9bf79a3 100644
--- a/base/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/77392.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js
index 2ba2912..2e83e9f 100644
--- a/base/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7d397.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7d722.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js
index 4989112..9f7ff61 100644
--- a/base/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7df41.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7dfa6.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js
index 5a22b1c..f37c66d 100644
--- a/base/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7eb30.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js
index 03269ce..82a8118 100644
--- a/base/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7f568.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
index 6bca24b..8000931 100644
--- a/base/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/7fbfb.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js
index e7036f9..34b371b 100644
--- a/base/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/80aff.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js
index 59da7ef..368c983 100644
--- a/base/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/82509.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js
index fb2baf4..5186f05 100644
--- a/base/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/8592b.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/88130.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/8a62c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js
index 47fd602..8a23010 100644
--- a/base/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/908db.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9617f.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js
index f4e553d..fb4c941 100644
--- a/base/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/96f7c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js
index b2fbeb7..bdfbe08 100644
--- a/base/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9847b.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9929c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js
index a623356..bc7841f 100644
--- a/base/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/996bd.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js
index b655f68..258fa04 100644
--- a/base/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9a503.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
index 94ebbc9..97749e4 100644
--- a/base/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9ac3b.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js
index 865f78d..c8d3bbd 100644
--- a/base/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/9eed5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js
index 4cbbdc6..d67cfb6 100644
--- a/base/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a0496.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a1eca.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
index 47ca086..b9cce95 100644
--- a/base/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a3d8c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a45b0.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a71df.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/a9691.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ab0d1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/abb4b.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ac944.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js
index 0f11bea..12ba177 100644
--- a/base/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ad8be.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
index 58067a6..07ffaa4 100644
--- a/base/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ae7f0.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
index a469f40..f755f0a 100644
--- a/base/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ae9ca.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js
index 61c13f0..e7b1820 100644
--- a/base/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/af2d1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js
index c92e808..9f6f40f 100644
--- a/base/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b4865.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b6f2c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
index b614cc0..e607419 100644
--- a/base/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b6fe5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js
index f1717c7..f7755ad 100644
--- a/base/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/b9f64.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/bb1ec.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js
index 23847ff..76a5e10 100644
--- a/base/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/be234.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js
index 438a6fc..592fdbf 100644
--- a/base/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c0356.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c0a3a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js
index 2c286be..9e9d9eb 100644
--- a/base/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c3303.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
index ef2d6e9..d6ef2d0 100644
--- a/base/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c6cfd.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
index ae17f28..aa73f8e 100644
--- a/base/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/c8c7e.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
index c408c01..9af3182 100644
--- a/base/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cb0cc.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js
index 150dfff..73c0c0d 100644
--- a/base/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cb81e.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ccd18.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js
index 7ed503d..65866fa 100644
--- a/base/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cd238.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cd463.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js
index 97e4dd1..cbbe822 100644
--- a/base/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cda6c.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cf0d8.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js
index b5bc8f9..a22c659 100644
--- a/base/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/cfbce.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js
index a8a2cb9..1c3c149 100644
--- a/base/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/d0908.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js
index e5a1acd..bd04ff0 100644
--- a/base/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/d23d5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
index ab0231f..87d2f58 100644
--- a/base/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dbfb3.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js
index 3290a2f..8a7c348 100644
--- a/base/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dc44f.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
index 3290a2f..8a7c348 100644
--- a/base/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dd1ce.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js
index a1a1ab7..28efc8f 100644
--- a/base/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/dec3a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js
index acd1fb9..5f0166c 100644
--- a/base/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/df957.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
index 0985cf4..ba2b40d 100644
--- a/base/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e0ac7.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js
index fd7fefa..73a1ab0 100644
--- a/base/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e2915.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js
index 0859361..8630f66 100644
--- a/base/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e2a58.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js
index fa10af3..bce9162 100644
--- a/base/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e324e.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js
index ec39a74..99b31a8 100644
--- a/base/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e53b5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js
index 988b2e3..b56d621 100644
--- a/base/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e64a0.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e8a0b.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js
index cfb13df..4906de7 100644
--- a/base/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/e8b04.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js
index 12ecaff..98fe333 100644
--- a/base/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/ed095.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js
index e7d55b9..659d4bb 100644
--- a/base/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f22f5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js
index b2fbeb7..bdfbe08 100644
--- a/base/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f3139.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f3edf.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js
index 5072650..c5fd155 100644
--- a/base/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f466a.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js
index 2c60e6b..ee8675e 100644
--- a/base/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f6a65.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js
index 580e744..0249c78 100644
--- a/base/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f74d5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js
index 2df6837..70985ce 100644
--- a/base/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f82d9.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js
index 22fb238..93b54f7 100644
--- a/base/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/f974d.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js
index 984006a..f406ca7 100644
--- a/base/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/faff5.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js
index e17f74c..8a22a06 100644
--- a/base/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/fcca3.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js b/head/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js
index d23e2d7..eb82c03 100644
--- a/base/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/misc/fd329.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js
index 02c4dcf..51d565f 100644
--- a/base/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/blns-object.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js
index 4db6c3c..25843f3 100644
--- a/base/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2037.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js
index 439166c..58c7287 100644
--- a/base/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2521.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js
index 6c8f4c3..1adc210 100644
--- a/base/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2590.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js
index c6916a2..89a9613 100644
--- a/base/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2663.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js
index 4b2fe59..66b493e 100644
--- a/base/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug2793.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js
index 0e23edd..3037dc1 100644
--- a/base/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug427.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js
index 076984a..887407d 100644
--- a/base/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug790.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
index bd2794c..58262a2 100644
--- a/base/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug855-short.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js
index cabd493..04ecdb7 100644
--- a/base/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/bug863.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
index c113e96..86a658c 100644
--- a/base/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js
index c6b3420..f892b12 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js
index c6b3420..f892b12 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js
index e220990..330fc81 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 957f00f..26e1699 100644
--- a/base/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js
index 8de8df6..ffb5ba9 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js
index 8de8df6..ffb5ba9 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js
index 2362827..d333075 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index fbb3c93..e64d8d3 100644
--- a/base/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js
index 7bdc1a8..cfa572b 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js
index 7bdc1a8..cfa572b 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js
index 0fc1b77..547f01c 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index d88ee80..8605361 100644
--- a/base/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js
index 9098e52..6dac0d3 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/converters-top-level--67aa452ed509/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js
index 9098e52..6dac0d3 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js
index 84b4eb4..8eaeaa8 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js b/head/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
index 60a61ff..2146b4e 100644
--- a/base/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
index 7db1140..9688d0a 100644
--- a/base/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/combined-enum.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
index 25bdd46..f7c64d7 100644
--- a/base/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
index 2805dbb..fc7d818 100644
--- a/base/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/empty-enum.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js
index 24aedef..e8bf98a 100644
--- a/base/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/identifiers.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
index 601b357..f901377 100644
--- a/base/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
index 9515706..42e24b8 100644
--- a/base/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 e02cc68..e5295c5 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
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -739,7 +739,6 @@ const typeMap = {
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "MarshalJSON", js: "MarshalJSON", typ: r("MarshalJSON") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
@@ -777,6 +776,7 @@ const typeMap = {
         { json: "list", js: "list", typ: r("List") },
         { json: "lock", js: "lock", typ: r("Lock") },
         { json: "long", js: "long", typ: r("Long") },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: r("MakeDictEncoder") },
         { json: "map", js: "map", typ: r("Map") },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: r("MetadataPropertyHandling") },
         { json: "module", js: "module", typ: r("Module") },
@@ -786,7 +786,6 @@ const typeMap = {
         { json: "native", js: "native", typ: r("Native") },
         { json: "new", js: "new", typ: r("New") },
         { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -842,9 +841,6 @@ const typeMap = {
     "MarshalJSON": o([
         { json: "MarshalJSON", js: "MarshalJSON", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
-    ], false),
     "Goto": o([
         { json: "goto", js: "goto", typ: i(0) },
     ], false),
@@ -953,6 +949,9 @@ const typeMap = {
     "Long": o([
         { json: "long", js: "long", typ: i(0) },
     ], false),
+    "MakeDictEncoder": o([
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: i(0) },
+    ], false),
     "Map": o([
         { json: "map", js: "map", typ: i(0) },
     ], false),
@@ -980,10 +979,8 @@ const typeMap = {
     "Newtonsoft": o([
         { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
     ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
@@ -992,8 +989,8 @@ const typeMap = {
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
         { 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: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
         { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
@@ -1048,7 +1045,9 @@ 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") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -1074,8 +1073,8 @@ const typeMap = {
     "RegExp": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
@@ -1239,12 +1238,10 @@ const typeMap = {
     "Sbyte": o([
         { json: "sbyte", js: "sbyte", typ: i(0) },
     ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", 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") },
@@ -1261,8 +1258,8 @@ const typeMap = {
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: r("UnmarshalJSON") },
-        { 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") },
@@ -1307,8 +1304,6 @@ const typeMap = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -1316,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),
@@ -1364,8 +1362,8 @@ const typeMap = {
     "UnmarshalJSON": o([
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: i(0) },
     ], false),
-    "UseSerializers": o([
-        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
     ], false),
     "Select": o([
         { json: "select", js: "select", typ: i(0) },
@@ -1499,18 +1497,15 @@ const typeMap = {
     "Union": o([
         { json: "union", js: "union", typ: i(0) },
     ], false),
-    "Unowned": o([
-        { json: "unowned", js: "unowned", typ: i(0) },
-    ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
     "Obj6": o([
         { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
         { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "unowned", js: "unowned", typ: r("Unowned") },
+        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
         { json: "using", js: "using", typ: r("Using") },
@@ -1531,6 +1526,9 @@ const typeMap = {
     "UUID": o([
         { json: "UUID", js: "UUID", typ: i(0) },
     ], false),
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    ], false),
     "Utf8JSONReader": o([
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
     ], false),
@@ -1540,6 +1538,12 @@ const typeMap = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "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),
diff --git a/base/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
index afd8b5b..6210480 100644
--- a/base/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/list.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/list.json/default/TopLevel.js
index 279b16f..2cbdd2e 100644
--- a/base/javascript/test/inputs/json/priority/list.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/list.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js
index 1f13def..c65bbc6 100644
--- a/base/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/name-style.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
index 6a9855b..8ba7b16 100644
--- a/base/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js b/head/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js
index d14ecfb..90ee03d 100644
--- a/base/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nested-objects.json/converters-all-objects--3a443babd1cb/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
index d14ecfb..90ee03d 100644
--- a/base/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nested-objects.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js
index 38e3295..6f70d45 100644
--- a/base/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/no-classes.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
index c52af80..fb1129f 100644
--- a/base/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js
index f67e389..61cf3f7 100644
--- a/base/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/number-map.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
index 43380a8..b409f95 100644
--- a/base/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/omit-empty.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js
index 2287ca4..a7755cf 100644
--- a/base/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/optional-union.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
index 555bab5..4c6d0d3 100644
--- a/base/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js
index 6cdb09a..a5d7c6e 100644
--- a/base/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/php-validation.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js
index ebdf80c..42d2ced 100644
--- a/base/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/recursive.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
index 1ecd528..09ba027 100644
--- a/base/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
index f541287..7392567 100644
--- a/base/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js
index 5686cad..87c9c8f 100644
--- a/base/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/unions.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/url.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/url.json/default/TopLevel.js
index eddd54c..6ac4f49 100644
--- a/base/javascript/test/inputs/json/priority/url.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/url.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js
index a8baed6..9850f5a 100644
--- a/base/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/uuids.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
index 22fb238..93b54f7 100644
--- a/base/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
index 744997a..3c658f1 100644
--- a/base/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js
index 6286f9a..f3e645b 100644
--- a/base/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/getting-started.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js
index 8cdad8e..ea16d1c 100644
--- a/base/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/github-events.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
index 482996b..f9191aa 100644
--- a/base/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js
index 561f080..5530bdb 100644
--- a/base/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/null-safe.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
index a887bec..66cdbee 100644
--- a/base/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js
index 51d9840..4893c29 100644
--- a/base/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/pokedex.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js
index 1ebb38a..df366d3 100644
--- a/base/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/reddit.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js
index 6be8558..b19025d 100644
--- a/base/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/simple-object.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
index 86817b6..848110d 100644
--- a/base/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/spotify-album.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
index d23e2d7..eb82c03 100644
--- a/base/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js b/head/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js
index dc3a543..5460faa 100644
--- a/base/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/samples/us-senators.json/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 c10ca03..dc26b74 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
@@ -163,7 +163,6 @@ let _JSONTokenType;
 let _Locale;
 let _MapEntry;
 let _MarshalJSON;
-let _No;
 let _Goto;
 let _Guard;
 let _HasOwnProperty;
@@ -200,6 +199,7 @@ let _Let;
 let _List;
 let _Lock;
 let _Long;
+let _MakeDictEncoder;
 let _Map;
 let _MetadataPropertyHandling;
 let _Module;
@@ -209,8 +209,8 @@ let _Namespace;
 let _Native;
 let _New;
 let _Newtonsoft;
-let _Nil;
 let _Obj4;
+let _No;
 let _NSError;
 let _NSObject;
 let _NSString;
@@ -219,7 +219,7 @@ let _None;
 let _ObjectMapper;
 let _Protocol;
 let _RegExp;
-let _Sel;
+let _Nil;
 let _NoSuchMethod;
 let _Noexcept;
 let _Nonatomic;
@@ -274,10 +274,10 @@ let _Right;
 let _RuntimeType;
 let _S;
 let _Sbyte;
-let _Sealed;
 let _Obj5;
 let _KSerializer;
 let _PrimitiveKind;
+let _Sel;
 let _Self;
 let _Sendable;
 let _SerialDescriptor;
@@ -294,7 +294,7 @@ let _TimeZone;
 let _True;
 let _Type;
 let _UnmarshalJSON;
-let _UseSerializers;
+let _Sealed;
 let _Select;
 let _SelfClass;
 let _Serialize;
@@ -339,13 +339,14 @@ let _Ulong;
 let _Unchecked;
 let _Undefined;
 let _Union;
-let _Unowned;
-let _Unsafe;
 let _Obj6;
 let _UUID;
+let _UseSerializers;
 let _Utf8JSONReader;
 let _Utf8JSONWriter;
 let _Yes;
+let _Unowned;
+let _Unsafe;
 let _Unsigned;
 let _Ushort;
 let _Using;
@@ -935,9 +936,6 @@ _MapEntry = PropTypes.shape({
 _MarshalJSON = PropTypes.shape({
     "MarshalJSON": PropTypes.oneOfType([Integer]).isRequired,
 });
-_No = PropTypes.shape({
-    "NO": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Goto = PropTypes.shape({
     "goto": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1046,6 +1044,9 @@ _Lock = PropTypes.shape({
 _Long = PropTypes.shape({
     "long": PropTypes.oneOfType([Integer]).isRequired,
 });
+_MakeDictEncoder = PropTypes.shape({
+    "makeDictEncoder": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Map = PropTypes.shape({
     "map": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1073,9 +1074,6 @@ _New = PropTypes.shape({
 _Newtonsoft = PropTypes.shape({
     "newtonsoft": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Nil = PropTypes.shape({
-    "nil": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj3 = PropTypes.shape({
     "Hashable": _Hashable,
     "Hasher": _Hasher,
@@ -1095,7 +1093,6 @@ _Obj3 = PropTypes.shape({
     "Locale": _Locale,
     "MapEntry": _MapEntry,
     "MarshalJSON": _MarshalJSON,
-    "NO": _No,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
     "goto": _Goto,
     "guard": _Guard,
@@ -1133,6 +1130,7 @@ _Obj3 = PropTypes.shape({
     "list": _List,
     "lock": _Lock,
     "long": _Long,
+    "makeDictEncoder": _MakeDictEncoder,
     "map": _Map,
     "metadata_property_handling": _MetadataPropertyHandling,
     "module": _Module,
@@ -1142,7 +1140,9 @@ _Obj3 = PropTypes.shape({
     "native": _Native,
     "new": _New,
     "newtonsoft": _Newtonsoft,
-    "nil": _Nil,
+});
+_No = PropTypes.shape({
+    "NO": PropTypes.oneOfType([Integer]).isRequired,
 });
 _NSError = PropTypes.shape({
     "NSError": PropTypes.oneOfType([Integer]).isRequired,
@@ -1168,8 +1168,8 @@ _Protocol = PropTypes.shape({
 _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,
+_Nil = PropTypes.shape({
+    "nil": PropTypes.oneOfType([Integer]).isRequired,
 });
 _NoSuchMethod = PropTypes.shape({
     "noSuchMethod": PropTypes.oneOfType([Integer]).isRequired,
@@ -1333,10 +1333,8 @@ _S = PropTypes.shape({
 _Sbyte = PropTypes.shape({
     "sbyte": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Sealed = PropTypes.shape({
-    "sealed": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj4 = PropTypes.shape({
+    "NO": _No,
     "NSError": _NSError,
     "NSObject": _NSObject,
     "NSString": _NSString,
@@ -1345,8 +1343,8 @@ _Obj4 = PropTypes.shape({
     "ObjectMapper": _ObjectMapper,
     "Protocol": _Protocol,
     "RegExp": _RegExp,
-    "SEL": _Sel,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "nil": _Nil,
     "noSuchMethod": _NoSuchMethod,
     "noexcept": _Noexcept,
     "nonatomic": _Nonatomic,
@@ -1401,7 +1399,6 @@ _Obj4 = PropTypes.shape({
     "runtimeType": _RuntimeType,
     "s": _S,
     "sbyte": _Sbyte,
-    "sealed": _Sealed,
 });
 _KSerializer = PropTypes.shape({
     "KSerializer": PropTypes.oneOfType([Integer]).isRequired,
@@ -1409,6 +1406,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,
 });
@@ -1457,8 +1457,8 @@ _Type = PropTypes.shape({
 _UnmarshalJSON = PropTypes.shape({
     "UnmarshalJSON": PropTypes.oneOfType([Integer]).isRequired,
 });
-_UseSerializers = PropTypes.shape({
-    "UseSerializers": PropTypes.oneOfType([Integer]).isRequired,
+_Sealed = PropTypes.shape({
+    "sealed": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Select = PropTypes.shape({
     "select": PropTypes.oneOfType([Integer]).isRequired,
@@ -1592,15 +1592,10 @@ _Undefined = PropTypes.shape({
 _Union = PropTypes.shape({
     "union": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Unowned = PropTypes.shape({
-    "unowned": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Unsafe = PropTypes.shape({
-    "unsafe": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj5 = PropTypes.shape({
     "KSerializer": _KSerializer,
     "PrimitiveKind": _PrimitiveKind,
+    "SEL": _Sel,
     "Self": _Self,
     "Sendable": _Sendable,
     "SerialDescriptor": _SerialDescriptor,
@@ -1617,8 +1612,8 @@ _Obj5 = PropTypes.shape({
     "True": _True,
     "Type": _Type,
     "UnmarshalJSON": _UnmarshalJSON,
-    "UseSerializers": _UseSerializers,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "sealed": _Sealed,
     "select": _Select,
     "self": _SelfClass,
     "serialize": _Serialize,
@@ -1663,12 +1658,13 @@ _Obj5 = PropTypes.shape({
     "unchecked": _Unchecked,
     "undefined": _Undefined,
     "union": _Union,
-    "unowned": _Unowned,
-    "unsafe": _Unsafe,
 });
 _UUID = PropTypes.shape({
     "UUID": PropTypes.oneOfType([Integer]).isRequired,
 });
+_UseSerializers = PropTypes.shape({
+    "UseSerializers": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Utf8JSONReader = PropTypes.shape({
     "Utf8JsonReader": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1678,6 +1674,12 @@ _Utf8JSONWriter = PropTypes.shape({
 _Yes = PropTypes.shape({
     "YES": PropTypes.oneOfType([Integer]).isRequired,
 });
+_Unowned = PropTypes.shape({
+    "unowned": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Unsafe = PropTypes.shape({
+    "unsafe": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Unsigned = PropTypes.shape({
     "unsigned": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1728,10 +1730,13 @@ _Yield = PropTypes.shape({
 });
 _Obj6 = PropTypes.shape({
     "UUID": _UUID,
+    "UseSerializers": _UseSerializers,
     "Utf8JsonReader": _Utf8JSONReader,
     "Utf8JsonWriter": _Utf8JSONWriter,
     "YES": _Yes,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "unowned": _Unowned,
+    "unsafe": _Unsafe,
     "unsigned": _Unsigned,
     "ushort": _Ushort,
     "using": _Using,
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 fe7a212..15a7418 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
@@ -956,6 +956,7 @@ data class Obj3 (
 
     val lock: Lock,
     val long: LongClass,
+    val makeDictEncoder: MakeDictEncoder,
     val map: MapClass,
 
     @Json(name = "MapEntry")
@@ -974,10 +975,6 @@ data class Obj3 (
     val native: Native,
     val new: New,
     val newtonsoft: Newtonsoft,
-    val nil: Nil,
-
-    @Json(name = "NO")
-    val no: No,
 
     @Json(name = "if")
     val obj3If: If,
@@ -1204,6 +1201,10 @@ data class LongClass (
     val long: Long
 )
 
+data class MakeDictEncoder (
+    val makeDictEncoder: Long
+)
+
 data class MapClass (
     val map: Long
 )
@@ -1251,15 +1252,6 @@ data class Newtonsoft (
     val newtonsoft: Long
 )
 
-data class Nil (
-    val nil: Long
-)
-
-data class No (
-    @Json(name = "NO")
-    val no: Long
-)
-
 data class If (
     @Json(name = "if")
     val ifIf: Long
@@ -1282,6 +1274,11 @@ data class Is (
 
 data class Obj4 (
     val dummy: Long,
+    val nil: Nil,
+
+    @Json(name = "NO")
+    val no: No,
+
     val noSuchMethod: NoSuchMethod,
     val noexcept: Noexcept,
     val nonatomic: Nonatomic,
@@ -1384,11 +1381,16 @@ data class Obj4 (
     val right: Right,
     val runtimeType: RuntimeType,
     val s: S,
-    val sbyte: Sbyte,
-    val sealed: Sealed,
+    val sbyte: Sbyte
+)
 
-    @Json(name = "SEL")
-    val sel: Sel
+data class Nil (
+    val nil: Long
+)
+
+data class No (
+    @Json(name = "NO")
+    val no: Long
 )
 
 data class NoSuchMethod (
@@ -1654,15 +1656,6 @@ data class Sbyte (
     val sbyte: Long
 )
 
-data class Sealed (
-    val sealed: Long
-)
-
-data class Sel (
-    @Json(name = "SEL")
-    val sel: Long
-)
-
 data class Obj5 (
     val dummy: Long,
 
@@ -1702,6 +1695,11 @@ data class Obj5 (
     @Json(name = "true")
     val purpleTrue: TrueClass,
 
+    val sealed: Sealed,
+
+    @Json(name = "SEL")
+    val sel: Sel,
+
     val select: Select,
 
     @Json(name = "Self")
@@ -1802,13 +1800,7 @@ data class Obj5 (
     val union: Union,
 
     @Json(name = "UnmarshalJSON")
-    val unmarshalJSON: UnmarshalJSON,
-
-    val unowned: Unowned,
-    val unsafe: Unsafe,
-
-    @Json(name = "UseSerializers")
-    val useSerializers: UseSerializers
+    val unmarshalJSON: UnmarshalJSON
 )
 
 data class KSerializer (
@@ -1869,6 +1861,15 @@ 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
 )
@@ -2090,19 +2091,6 @@ data class UnmarshalJSON (
     val unmarshalJSON: Long
 )
 
-data class Unowned (
-    val unowned: Long
-)
-
-data class Unsafe (
-    val unsafe: Long
-)
-
-data class UseSerializers (
-    @Json(name = "UseSerializers")
-    val useSerializers: Long
-)
-
 data class Obj6 (
     val dummy: Long,
 
@@ -2112,7 +2100,13 @@ data class Obj6 (
     @Json(name = "while")
     val obj6While: While,
 
+    val unowned: Unowned,
+    val unsafe: Unsafe,
     val unsigned: Unsigned,
+
+    @Json(name = "UseSerializers")
+    val useSerializers: UseSerializers,
+
     val ushort: Ushort,
     val using: Using,
 
@@ -2157,10 +2151,23 @@ data class While (
     val whileWhile: Long
 )
 
+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
 )
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 abcaf7e..9b74f6e 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
@@ -1258,6 +1258,9 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val long: LongClass,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val makeDictEncoder: MakeDictEncoder,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val map: MapClass,
 
@@ -1291,12 +1294,6 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val newtonsoft: Newtonsoft,
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val nil: Nil,
-
-    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
-    val no: No,
-
     @get:JsonProperty("if", required=true)@field:JsonProperty("if", required=true)
     val obj3If: If,
 
@@ -1550,6 +1547,11 @@ data class LongClass (
     val long: Long
 )
 
+data class MakeDictEncoder (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val makeDictEncoder: Long
+)
+
 data class MapClass (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val map: Long
@@ -1605,16 +1607,6 @@ data class Newtonsoft (
     val newtonsoft: Long
 )
 
-data class Nil (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val nil: Long
-)
-
-data class No (
-    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
-    val no: Long
-)
-
 data class If (
     @get:JsonProperty("if", required=true)@field:JsonProperty("if", required=true)
     val ifIf: Long
@@ -1639,6 +1631,12 @@ data class Obj4 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val nil: Nil,
+
+    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
+    val no: No,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val noSuchMethod: NoSuchMethod,
 
@@ -1823,13 +1821,17 @@ data class Obj4 (
     val s: S,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val sbyte: Sbyte,
+    val sbyte: Sbyte
+)
 
+data class Nil (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val sealed: Sealed,
+    val nil: Long
+)
 
-    @get:JsonProperty("SEL", required=true)@field:JsonProperty("SEL", required=true)
-    val sel: Sel
+data class No (
+    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
+    val no: Long
 )
 
 data class NoSuchMethod (
@@ -2142,16 +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 Obj5 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
@@ -2192,6 +2184,12 @@ 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,
 
@@ -2340,16 +2338,7 @@ data class Obj5 (
     val union: Union,
 
     @get:JsonProperty("UnmarshalJSON", required=true)@field:JsonProperty("UnmarshalJSON", required=true)
-    val unmarshalJSON: UnmarshalJSON,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unowned: Unowned,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unsafe: Unsafe,
-
-    @get:JsonProperty("UseSerializers", required=true)@field:JsonProperty("UseSerializers", required=true)
-    val useSerializers: UseSerializers
+    val unmarshalJSON: UnmarshalJSON
 )
 
 data class KSerializer (
@@ -2412,6 +2401,16 @@ 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
@@ -2662,21 +2661,6 @@ data class UnmarshalJSON (
     val unmarshalJSON: Long
 )
 
-data class Unowned (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unowned: Long
-)
-
-data class Unsafe (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unsafe: Long
-)
-
-data class UseSerializers (
-    @get:JsonProperty("UseSerializers", required=true)@field:JsonProperty("UseSerializers", required=true)
-    val useSerializers: Long
-)
-
 data class Obj6 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
@@ -2687,9 +2671,18 @@ 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 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,
 
@@ -2752,11 +2745,26 @@ data class While (
     val whileWhile: Long
 )
 
+data class Unowned (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val unowned: Long
+)
+
+data class Unsafe (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val unsafe: Long
+)
+
 data class Unsigned (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unsigned: Long
 )
 
+data class 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
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 420c2f5..a838ae0 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
@@ -1069,6 +1069,7 @@ data class Obj3 (
 
     val lock: Lock,
     val long: LongClass,
+    val makeDictEncoder: MakeDictEncoder,
     val map: MapClass,
 
     @SerialName("MapEntry")
@@ -1087,10 +1088,6 @@ data class Obj3 (
     val native: Native,
     val new: New,
     val newtonsoft: Newtonsoft,
-    val nil: Nil,
-
-    @SerialName("NO")
-    val no: No,
 
     @SerialName("if")
     val obj3If: If,
@@ -1365,6 +1362,11 @@ data class LongClass (
     val long: Long
 )
 
+@Serializable
+data class MakeDictEncoder (
+    val makeDictEncoder: Long
+)
+
 @Serializable
 data class MapClass (
     val map: Long
@@ -1423,17 +1425,6 @@ data class Newtonsoft (
     val newtonsoft: Long
 )
 
-@Serializable
-data class Nil (
-    val nil: Long
-)
-
-@Serializable
-data class No (
-    @SerialName("NO")
-    val no: Long
-)
-
 @Serializable
 data class If (
     @SerialName("if")
@@ -1461,6 +1452,11 @@ data class Is (
 @Serializable
 data class Obj4 (
     val dummy: Long,
+    val nil: Nil,
+
+    @SerialName("NO")
+    val no: No,
+
     val noSuchMethod: NoSuchMethod,
     val noexcept: Noexcept,
     val nonatomic: Nonatomic,
@@ -1563,11 +1559,18 @@ data class Obj4 (
     val right: Right,
     val runtimeType: RuntimeType,
     val s: S,
-    val sbyte: Sbyte,
-    val sealed: Sealed,
+    val sbyte: Sbyte
+)
 
-    @SerialName("SEL")
-    val sel: Sel
+@Serializable
+data class Nil (
+    val nil: Long
+)
+
+@Serializable
+data class No (
+    @SerialName("NO")
+    val no: Long
 )
 
 @Serializable
@@ -1895,17 +1898,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 Obj5 (
     val dummy: Long,
@@ -1946,6 +1938,11 @@ data class Obj5 (
     @SerialName("true")
     val purpleTrue: TrueClass,
 
+    val sealed: Sealed,
+
+    @SerialName("SEL")
+    val sel: Sel,
+
     val select: Select,
 
     @SerialName("Self")
@@ -2046,13 +2043,7 @@ data class Obj5 (
     val union: Union,
 
     @SerialName("UnmarshalJSON")
-    val unmarshalJSON: UnmarshalJSON,
-
-    val unowned: Unowned,
-    val unsafe: Unsafe,
-
-    @SerialName("UseSerializers")
-    val useSerializers: UseSerializersClass
+    val unmarshalJSON: UnmarshalJSON
 )
 
 @Serializable
@@ -2125,6 +2116,17 @@ 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
@@ -2396,22 +2398,6 @@ data class UnmarshalJSON (
     val unmarshalJSON: Long
 )
 
-@Serializable
-data class Unowned (
-    val unowned: Long
-)
-
-@Serializable
-data class Unsafe (
-    val unsafe: Long
-)
-
-@Serializable
-data class UseSerializersClass (
-    @SerialName("UseSerializers")
-    val useSerializers: Long
-)
-
 @Serializable
 data class Obj6 (
     val dummy: Long,
@@ -2422,7 +2408,13 @@ data class Obj6 (
     @SerialName("while")
     val obj6While: While,
 
+    val unowned: Unowned,
+    val unsafe: Unsafe,
     val unsigned: Unsigned,
+
+    @SerialName("UseSerializers")
+    val useSerializers: UseSerializersClass,
+
     val ushort: Ushort,
     val using: Using,
 
@@ -2469,11 +2461,27 @@ data class While (
     val whileWhile: Long
 )
 
+@Serializable
+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
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 cc8f580..f493649 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
@@ -183,6 +183,7 @@
 @class QTList;
 @class QTLocale;
 @class QTLock;
+@class QTMakeDictEncoder;
 @class QTMap;
 @class QTMapEntry;
 @class QTMarshalJSON;
@@ -193,17 +194,16 @@
 @class QTNamespace;
 @class QTNative;
 @class QTNewtonsoft;
-@class QTNo;
 @class QTGoto;
 @class QTIf;
 @class QTInline;
 @class QTInt;
 @class QTLong;
-@class QTNil;
 @class QTHashCode;
 @class QTInit;
 @class QTNew;
 @class QTObj4;
+@class QTNo;
 @class QTNoSuchMethod;
 @class QTNoexcept;
 @class QTNone;
@@ -217,6 +217,7 @@
 @class QTNull;
 @class QTNullptr;
 @class QTNumber;
+@class QTNil;
 @class QTNonatomic;
 @class QTNoneClass;
 @class QTNullClass;
@@ -266,8 +267,6 @@
 @class QTRuntimeType;
 @class QTS;
 @class QTSbyte;
-@class QTSealed;
-@class QTSel;
 @class QTObj5;
 @class QTKSerializer;
 @class QTSelfClass;
@@ -283,6 +282,8 @@
 @class QTTypeof;
 @class QTUnion;
 @class QTPrimitiveKind;
+@class QTSealed;
+@class QTSel;
 @class QTSelect;
 @class QTSelf;
 @class QTSendable;
@@ -331,14 +332,14 @@
 @class QTUnchecked;
 @class QTUndefined;
 @class QTUnmarshalJSON;
-@class QTUnowned;
-@class QTUnsafe;
-@class QTUseSerializers;
 @class QTObj6;
 @class QTUnsigned;
 @class QTVoid;
 @class QTVolatile;
 @class QTWhile;
+@class QTUnowned;
+@class QTUnsafe;
+@class QTUseSerializers;
 @class QTUshort;
 @class QTUsing;
 @class QTUtf8JSONReader;
@@ -1086,6 +1087,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTList *list;
 @property (nonatomic, strong) QTLocale *locale;
 @property (nonatomic, strong) QTLock *lock;
+@property (nonatomic, strong) QTMakeDictEncoder *makeDictEncoder;
 @property (nonatomic, strong) QTMap *map;
 @property (nonatomic, strong) QTMapEntry *mapEntry;
 @property (nonatomic, strong) QTMarshalJSON *marshalJSON;
@@ -1096,13 +1098,11 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTNamespace *namespace;
 @property (nonatomic, strong) QTNative *native;
 @property (nonatomic, strong) QTNewtonsoft *newtonsoft;
-@property (nonatomic, strong) QTNo *no;
 @property (nonatomic, strong) QTGoto *obj3Goto;
 @property (nonatomic, strong) QTIf *obj3If;
 @property (nonatomic, strong) QTInline *obj3Inline;
 @property (nonatomic, strong) QTInt *obj3Int;
 @property (nonatomic, strong) QTLong *obj3Long;
-@property (nonatomic, strong) QTNil *obj3Nil;
 @property (nonatomic, strong) QTHashCode *theHashCode;
 @property (nonatomic, strong) QTInit *theInit;
 @property (nonatomic, strong) QTNew *theNew;
@@ -1288,6 +1288,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger lock;
 @end
 
+@interface QTMakeDictEncoder : NSObject
+@property (nonatomic, assign) NSInteger makeDictEncoder;
+@end
+
 @interface QTMap : NSObject
 @property (nonatomic, assign) NSInteger map;
 @end
@@ -1328,10 +1332,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger newtonsoft;
 @end
 
-@interface QTNo : NSObject
-@property (nonatomic, assign) NSInteger no;
-@end
-
 @interface QTGoto : NSObject
 @property (nonatomic, assign) NSInteger gotoGoto;
 @end
@@ -1352,10 +1352,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger longLong;
 @end
 
-@interface QTNil : NSObject
-@property (nonatomic, assign) NSInteger nilNil;
-@end
-
 @interface QTHashCode : NSObject
 @property (nonatomic, assign) NSInteger theHashCode;
 @end
@@ -1370,6 +1366,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 
 @interface QTObj4 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
+@property (nonatomic, strong) QTNo *no;
 @property (nonatomic, strong) QTNoSuchMethod *noSuchMethod;
 @property (nonatomic, strong) QTNoexcept *noexcept;
 @property (nonatomic, strong) QTNone *none;
@@ -1383,6 +1380,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTNull *null;
 @property (nonatomic, strong) QTNullptr *nullptr;
 @property (nonatomic, strong) QTNumber *number;
+@property (nonatomic, strong) QTNil *obj4Nil;
 @property (nonatomic, strong) QTNonatomic *obj4Nonatomic;
 @property (nonatomic, strong) QTNoneClass *obj4None;
 @property (nonatomic, strong) QTNullClass *obj4Null;
@@ -1432,8 +1430,10 @@ 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;
+@end
+
+@interface QTNo : NSObject
+@property (nonatomic, assign) NSInteger no;
 @end
 
 @interface QTNoSuchMethod : NSObject
@@ -1488,6 +1488,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger number;
 @end
 
+@interface QTNil : NSObject
+@property (nonatomic, assign) NSInteger nilNil;
+@end
+
 @interface QTNonatomic : NSObject
 @property (nonatomic, assign) NSInteger nonatomicNonatomic;
 @end
@@ -1684,14 +1688,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 QTObj5 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
 @property (nonatomic, strong) QTKSerializer *kSerializer;
@@ -1708,6 +1704,8 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTTypeof *obj5Typeof;
 @property (nonatomic, strong) QTUnion *obj5Union;
 @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;
@@ -1756,9 +1754,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTUnchecked *unchecked;
 @property (nonatomic, strong) QTUndefined *undefined;
 @property (nonatomic, strong) QTUnmarshalJSON *unmarshalJSON;
-@property (nonatomic, strong) QTUnowned *unowned;
-@property (nonatomic, strong) QTUnsafe *unsafe;
-@property (nonatomic, strong) QTUseSerializers *useSerializers;
 @end
 
 @interface QTKSerializer : NSObject
@@ -1817,6 +1812,14 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @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
@@ -2009,24 +2012,15 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger unmarshalJSON;
 @end
 
-@interface QTUnowned : NSObject
-@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 QTObj6 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
 @property (nonatomic, strong) QTUnsigned *obj6Unsigned;
 @property (nonatomic, strong) QTVoid *obj6Void;
 @property (nonatomic, strong) QTVolatile *obj6Volatile;
 @property (nonatomic, strong) QTWhile *obj6While;
+@property (nonatomic, strong) QTUnowned *unowned;
+@property (nonatomic, strong) QTUnsafe *unsafe;
+@property (nonatomic, strong) QTUseSerializers *useSerializers;
 @property (nonatomic, strong) QTUshort *ushort;
 @property (nonatomic, strong) QTUsing *using;
 @property (nonatomic, strong) QTUtf8JSONReader *utf8JSONReader;
@@ -2061,6 +2055,18 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger whileWhile;
 @end
 
+@interface QTUnowned : NSObject
+@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
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 9c2f1ac..d3fbc22 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
@@ -893,6 +893,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTMakeDictEncoder (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTMap (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -943,11 +948,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNo (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTGoto (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -973,11 +973,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNil (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTHashCode (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -998,6 +993,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTNo (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTNoSuchMethod (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1063,6 +1063,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTNil (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTNonatomic (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1308,16 +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 QTObj5 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1393,6 +1388,16 @@ 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;
@@ -1633,42 +1638,42 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnowned (JSONConversion)
+@interface QTObj6 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnsafe (JSONConversion)
+@interface QTUnsigned (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUseSerializers (JSONConversion)
+@interface QTVoid (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj6 (JSONConversion)
+@interface QTVolatile (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnsigned (JSONConversion)
+@interface QTWhile (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVoid (JSONConversion)
+@interface QTUnowned (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVolatile (JSONConversion)
+@interface QTUnsafe (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTWhile (JSONConversion)
+@interface QTUseSerializers (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -8686,6 +8691,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"list": @"list",
         @"Locale": @"locale",
         @"lock": @"lock",
+        @"makeDictEncoder": @"makeDictEncoder",
         @"map": @"map",
         @"MapEntry": @"mapEntry",
         @"MarshalJSON": @"marshalJSON",
@@ -8696,13 +8702,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"namespace": @"namespace",
         @"native": @"native",
         @"newtonsoft": @"newtonsoft",
-        @"NO": @"no",
         @"goto": @"obj3Goto",
         @"if": @"obj3If",
         @"inline": @"obj3Inline",
         @"int": @"obj3Int",
         @"long": @"obj3Long",
-        @"nil": @"obj3Nil",
         @"hashCode": @"theHashCode",
         @"init": @"theInit",
         @"new": @"theNew",
@@ -8764,6 +8768,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"list"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Locale"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"lock"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"makeDictEncoder"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"map"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"MapEntry"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"MarshalJSON"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8774,13 +8779,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"namespace"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"native"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"newtonsoft"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"NO"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"goto"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"if"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"inline"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"int"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"long"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"nil"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"hashCode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"init"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"new"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8875,6 +8878,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_locale && dict[@"Locale"] && ![dict[@"Locale"] isKindOfClass:NSNull.class]) return nil;
         _lock = [QTLock fromJSONDictionary:(id)_lock];
         if (!_lock && dict[@"lock"] && ![dict[@"lock"] isKindOfClass:NSNull.class]) return nil;
+        _makeDictEncoder = [QTMakeDictEncoder fromJSONDictionary:(id)_makeDictEncoder];
+        if (!_makeDictEncoder && dict[@"makeDictEncoder"] && ![dict[@"makeDictEncoder"] isKindOfClass:NSNull.class]) return nil;
         _map = [QTMap fromJSONDictionary:(id)_map];
         if (!_map && dict[@"map"] && ![dict[@"map"] isKindOfClass:NSNull.class]) return nil;
         _mapEntry = [QTMapEntry fromJSONDictionary:(id)_mapEntry];
@@ -8895,8 +8900,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_native && dict[@"native"] && ![dict[@"native"] isKindOfClass:NSNull.class]) return nil;
         _newtonsoft = [QTNewtonsoft fromJSONDictionary:(id)_newtonsoft];
         if (!_newtonsoft && dict[@"newtonsoft"] && ![dict[@"newtonsoft"] isKindOfClass:NSNull.class]) return nil;
-        _no = [QTNo fromJSONDictionary:(id)_no];
-        if (!_no && dict[@"NO"] && ![dict[@"NO"] isKindOfClass:NSNull.class]) return nil;
         _obj3Goto = [QTGoto fromJSONDictionary:(id)_obj3Goto];
         if (!_obj3Goto && dict[@"goto"] && ![dict[@"goto"] isKindOfClass:NSNull.class]) return nil;
         _obj3If = [QTIf fromJSONDictionary:(id)_obj3If];
@@ -8907,8 +8910,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj3Int && dict[@"int"] && ![dict[@"int"] isKindOfClass:NSNull.class]) return nil;
         _obj3Long = [QTLong fromJSONDictionary:(id)_obj3Long];
         if (!_obj3Long && dict[@"long"] && ![dict[@"long"] isKindOfClass:NSNull.class]) return nil;
-        _obj3Nil = [QTNil fromJSONDictionary:(id)_obj3Nil];
-        if (!_obj3Nil && dict[@"nil"] && ![dict[@"nil"] isKindOfClass:NSNull.class]) return nil;
         _theHashCode = [QTHashCode fromJSONDictionary:(id)_theHashCode];
         if (!_theHashCode && dict[@"hashCode"] && ![dict[@"hashCode"] isKindOfClass:NSNull.class]) return nil;
         _theInit = [QTInit fromJSONDictionary:(id)_theInit];
@@ -8989,6 +8990,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"list": [_list JSONDictionary],
         @"Locale": [_locale JSONDictionary],
         @"lock": [_lock JSONDictionary],
+        @"makeDictEncoder": [_makeDictEncoder JSONDictionary],
         @"map": [_map JSONDictionary],
         @"MapEntry": [_mapEntry JSONDictionary],
         @"MarshalJSON": [_marshalJSON JSONDictionary],
@@ -8999,13 +9001,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"namespace": [_namespace JSONDictionary],
         @"native": [_native JSONDictionary],
         @"newtonsoft": [_newtonsoft JSONDictionary],
-        @"NO": [_no JSONDictionary],
         @"goto": [_obj3Goto JSONDictionary],
         @"if": [_obj3If JSONDictionary],
         @"inline": [_obj3Inline JSONDictionary],
         @"int": [_obj3Int JSONDictionary],
         @"long": [_obj3Long JSONDictionary],
-        @"nil": [_obj3Nil JSONDictionary],
         @"hashCode": [_theHashCode JSONDictionary],
         @"init": [_theInit JSONDictionary],
         @"new": [_theNew JSONDictionary],
@@ -11114,6 +11114,48 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTMakeDictEncoder
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"makeDictEncoder": @"makeDictEncoder",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTMakeDictEncoder alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"makeDictEncoder"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"makeDictEncoder"] doubleValue] != [dict[@"makeDictEncoder"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTMakeDictEncoder.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTMakeDictEncoder.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTMakeDictEncoder.properties.allValues];
+}
+@end
+
 @implementation QTMap
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -11564,58 +11606,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTNo
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"NO": @"no",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNo alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"NO"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"NO"] doubleValue] != [dict[@"NO"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTNo.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTNo.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTNo.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTNo.properties) {
-        id propertyName = QTNo.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
 @implementation QTGoto
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -11876,58 +11866,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTNil
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"nil": @"nilNil",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNil alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"nil"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"nil"] doubleValue] != [dict[@"nil"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTNil.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTNil.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTNil.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTNil.properties) {
-        id propertyName = QTNil.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
 @implementation QTHashCode
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -12090,6 +12028,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
         @"dummy": @"dummy",
+        @"NO": @"no",
         @"noSuchMethod": @"noSuchMethod",
         @"noexcept": @"noexcept",
         @"None": @"none",
@@ -12103,6 +12042,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"NULL": @"null",
         @"nullptr": @"nullptr",
         @"number": @"number",
+        @"nil": @"obj4Nil",
         @"nonatomic": @"obj4Nonatomic",
         @"none": @"obj4None",
         @"null": @"obj4Null",
@@ -12152,8 +12092,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"runtimeType": @"runtimeType",
         @"s": @"s",
         @"sbyte": @"sbyte",
-        @"sealed": @"sealed",
-        @"SEL": @"sel",
     };
 }
 
@@ -12167,6 +12105,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     if (self = [super init]) {
         if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
         if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
+        if (![dict[@"NO"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"noSuchMethod"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"noexcept"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"None"] isKindOfClass:NSDictionary.class]) return nil;
@@ -12180,6 +12119,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"NULL"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"nullptr"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"number"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"nil"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"nonatomic"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"none"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"null"] isKindOfClass:NSDictionary.class]) return nil;
@@ -12229,9 +12169,9 @@ 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;
         [self setValuesForKeysWithDictionary:dict];
+        _no = [QTNo fromJSONDictionary:(id)_no];
+        if (!_no && dict[@"NO"] && ![dict[@"NO"] isKindOfClass:NSNull.class]) return nil;
         _noSuchMethod = [QTNoSuchMethod fromJSONDictionary:(id)_noSuchMethod];
         if (!_noSuchMethod && dict[@"noSuchMethod"] && ![dict[@"noSuchMethod"] isKindOfClass:NSNull.class]) return nil;
         _noexcept = [QTNoexcept fromJSONDictionary:(id)_noexcept];
@@ -12258,6 +12198,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_nullptr && dict[@"nullptr"] && ![dict[@"nullptr"] isKindOfClass:NSNull.class]) return nil;
         _number = [QTNumber fromJSONDictionary:(id)_number];
         if (!_number && dict[@"number"] && ![dict[@"number"] isKindOfClass:NSNull.class]) return nil;
+        _obj4Nil = [QTNil fromJSONDictionary:(id)_obj4Nil];
+        if (!_obj4Nil && dict[@"nil"] && ![dict[@"nil"] isKindOfClass:NSNull.class]) return nil;
         _obj4Nonatomic = [QTNonatomic fromJSONDictionary:(id)_obj4Nonatomic];
         if (!_obj4Nonatomic && dict[@"nonatomic"] && ![dict[@"nonatomic"] isKindOfClass:NSNull.class]) return nil;
         _obj4None = [QTNoneClass fromJSONDictionary:(id)_obj4None];
@@ -12356,10 +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;
     }
     return self;
 }
@@ -12389,6 +12327,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     }
 
     [dict addEntriesFromDictionary:@{
+        @"NO": [_no JSONDictionary],
         @"noSuchMethod": [_noSuchMethod JSONDictionary],
         @"noexcept": [_noexcept JSONDictionary],
         @"None": [_none JSONDictionary],
@@ -12402,6 +12341,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"NULL": [_null JSONDictionary],
         @"nullptr": [_nullptr JSONDictionary],
         @"number": [_number JSONDictionary],
+        @"nil": [_obj4Nil JSONDictionary],
         @"nonatomic": [_obj4Nonatomic JSONDictionary],
         @"none": [_obj4None JSONDictionary],
         @"null": [_obj4Null JSONDictionary],
@@ -12451,33 +12391,31 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"runtimeType": [_runtimeType JSONDictionary],
         @"s": [_s JSONDictionary],
         @"sbyte": [_sbyte JSONDictionary],
-        @"sealed": [_sealed JSONDictionary],
-        @"SEL": [_sel JSONDictionary],
     }];
 
     return dict;
 }
 @end
 
-@implementation QTNoSuchMethod
+@implementation QTNo
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"noSuchMethod": @"noSuchMethod",
+        @"NO": @"no",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNoSuchMethod alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNo alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"noSuchMethod"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"noSuchMethod"] doubleValue] != [dict[@"noSuchMethod"] longLongValue]) return nil;
+        if (![dict[@"NO"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"NO"] doubleValue] != [dict[@"NO"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -12485,41 +12423,93 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTNoSuchMethod.properties[key];
+    id resolved = QTNo.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTNoSuchMethod.properties[key];
+    id resolved = QTNo.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTNoSuchMethod.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTNo.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTNo.properties) {
+        id propertyName = QTNo.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTNoexcept
+@implementation QTNoSuchMethod
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"noexcept": @"noexcept",
+        @"noSuchMethod": @"noSuchMethod",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNoexcept alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNoSuchMethod 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;
+        if (![dict[@"noSuchMethod"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"noSuchMethod"] doubleValue] != [dict[@"noSuchMethod"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNoSuchMethod.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNoSuchMethod.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNoSuchMethod.properties.allValues];
+}
+@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;
@@ -13065,6 +13055,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTNil
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"nil": @"nilNil",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNil alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"nil"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"nil"] doubleValue] != [dict[@"nil"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNil.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNil.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTNil.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTNil.properties) {
+        id propertyName = QTNil.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTNonatomic
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -15223,100 +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 QTObj5
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -15337,6 +15285,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"typeof": @"obj5Typeof",
         @"union": @"obj5Union",
         @"PrimitiveKind": @"primitiveKind",
+        @"sealed": @"sealed",
+        @"SEL": @"sel",
         @"select": @"select",
         @"Self": @"self",
         @"Sendable": @"sendable",
@@ -15385,9 +15335,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"unchecked": @"unchecked",
         @"undefined": @"undefined",
         @"UnmarshalJSON": @"unmarshalJSON",
-        @"unowned": @"unowned",
-        @"unsafe": @"unsafe",
-        @"UseSerializers": @"useSerializers",
     };
 }
 
@@ -15415,6 +15362,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"typeof"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"union"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"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;
@@ -15463,9 +15412,6 @@ 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[@"UnmarshalJSON"] 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;
         [self setValuesForKeysWithDictionary:dict];
         _kSerializer = [QTKSerializer fromJSONDictionary:(id)_kSerializer];
         if (!_kSerializer && dict[@"KSerializer"] && ![dict[@"KSerializer"] isKindOfClass:NSNull.class]) return nil;
@@ -15495,6 +15441,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj5Union && dict[@"union"] && ![dict[@"union"] 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];
@@ -15591,12 +15541,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_undefined && dict[@"undefined"] && ![dict[@"undefined"] isKindOfClass:NSNull.class]) return nil;
         _unmarshalJSON = [QTUnmarshalJSON fromJSONDictionary:(id)_unmarshalJSON];
         if (!_unmarshalJSON && dict[@"UnmarshalJSON"] && ![dict[@"UnmarshalJSON"] 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;
     }
     return self;
 }
@@ -15640,6 +15584,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"typeof": [_obj5Typeof JSONDictionary],
         @"union": [_obj5Union JSONDictionary],
         @"PrimitiveKind": [_primitiveKind JSONDictionary],
+        @"sealed": [_sealed JSONDictionary],
+        @"SEL": [_sel JSONDictionary],
         @"select": [_select JSONDictionary],
         @"Self": [_self JSONDictionary],
         @"Sendable": [_sendable JSONDictionary],
@@ -15688,9 +15634,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"unchecked": [_unchecked JSONDictionary],
         @"undefined": [_undefined JSONDictionary],
         @"UnmarshalJSON": [_unmarshalJSON JSONDictionary],
-        @"unowned": [_unowned JSONDictionary],
-        @"unsafe": [_unsafe JSONDictionary],
-        @"UseSerializers": [_useSerializers JSONDictionary],
     }];
 
     return dict;
@@ -16405,25 +16348,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSelect
+@implementation QTSealed
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"select": @"select",
+        @"sealed": @"sealed",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelect alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSealed alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"select"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"select"] doubleValue] != [dict[@"select"] longLongValue]) return nil;
+        if (![dict[@"sealed"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"sealed"] doubleValue] != [dict[@"sealed"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16431,41 +16374,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSelect.properties[key];
+    id resolved = QTSealed.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSelect.properties[key];
+    id resolved = QTSealed.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSelect.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTSealed.properties.allValues];
 }
 @end
 
-@implementation QTSelf
+@implementation QTSel
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Self": @"self",
+        @"SEL": @"sel",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelf alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSel alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Self"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"Self"] doubleValue] != [dict[@"Self"] longLongValue]) return nil;
+        if (![dict[@"SEL"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SEL"] doubleValue] != [dict[@"SEL"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16473,22 +16416,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSelf.properties[key];
+    id resolved = QTSel.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSelf.properties[key];
+    id resolved = QTSel.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSelf.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSel.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSelf.properties) {
-        id propertyName = QTSelf.properties[jsonName];
+    for (id jsonName in QTSel.properties) {
+        id propertyName = QTSel.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16499,24 +16442,118 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSendable
+@implementation QTSelect
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Sendable": @"sendable",
+        @"select": @"select",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSendable alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelect alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Sendable"] isKindOfClass:NSNumber.class]) return nil;
+        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
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"Self": @"self",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelf alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"Self"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Self"] doubleValue] != [dict[@"Self"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSelf.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSelf.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTSelf.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSelf.properties) {
+        id propertyName = QTSelf.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTSendable
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"Sendable": @"sendable",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSendable alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"Sendable"] isKindOfClass:NSNumber.class]) return nil;
         if ([dict[@"Sendable"] doubleValue] != [dict[@"Sendable"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
@@ -18641,142 +18678,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUnowned
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"unowned": @"unowned",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnowned alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"unowned"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"unowned"] doubleValue] != [dict[@"unowned"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTUnowned.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTUnowned.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTUnowned.properties.allValues];
-}
-@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
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"UseSerializers": @"useSerializers",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUseSerializers alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"UseSerializers"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"UseSerializers"] doubleValue] != [dict[@"UseSerializers"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTUseSerializers.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTUseSerializers.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTUseSerializers.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTUseSerializers.properties) {
-        id propertyName = QTUseSerializers.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
 @implementation QTObj6
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -18787,6 +18688,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"void": @"obj6Void",
         @"volatile": @"obj6Volatile",
         @"while": @"obj6While",
+        @"unowned": @"unowned",
+        @"unsafe": @"unsafe",
+        @"UseSerializers": @"useSerializers",
         @"ushort": @"ushort",
         @"using": @"using",
         @"Utf8JsonReader": @"utf8JSONReader",
@@ -18820,6 +18724,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"void"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"volatile"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"while"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"unowned"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"unsafe"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"UseSerializers"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"ushort"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"using"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Utf8JsonReader"] isKindOfClass:NSDictionary.class]) return nil;
@@ -18845,6 +18752,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj6Volatile && dict[@"volatile"] && ![dict[@"volatile"] isKindOfClass:NSNull.class]) return nil;
         _obj6While = [QTWhile fromJSONDictionary:(id)_obj6While];
         if (!_obj6While && dict[@"while"] && ![dict[@"while"] isKindOfClass:NSNull.class]) return nil;
+        _unowned = [QTUnowned fromJSONDictionary:(id)_unowned];
+        if (!_unowned && dict[@"unowned"] && ![dict[@"unowned"] isKindOfClass:NSNull.class]) return nil;
+        _unsafe = [QTUnsafe fromJSONDictionary:(id)_unsafe];
+        if (!_unsafe && dict[@"unsafe"] && ![dict[@"unsafe"] isKindOfClass:NSNull.class]) return nil;
+        _useSerializers = [QTUseSerializers fromJSONDictionary:(id)_useSerializers];
+        if (!_useSerializers && dict[@"UseSerializers"] && ![dict[@"UseSerializers"] isKindOfClass:NSNull.class]) return nil;
         _ushort = [QTUshort fromJSONDictionary:(id)_ushort];
         if (!_ushort && dict[@"ushort"] && ![dict[@"ushort"] isKindOfClass:NSNull.class]) return nil;
         _using = [QTUsing fromJSONDictionary:(id)_using];
@@ -18910,6 +18823,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"void": [_obj6Void JSONDictionary],
         @"volatile": [_obj6Volatile JSONDictionary],
         @"while": [_obj6While JSONDictionary],
+        @"unowned": [_unowned JSONDictionary],
+        @"unsafe": [_unsafe JSONDictionary],
+        @"UseSerializers": [_useSerializers JSONDictionary],
         @"ushort": [_ushort JSONDictionary],
         @"using": [_using JSONDictionary],
         @"Utf8JsonReader": [_utf8JSONReader JSONDictionary],
@@ -19140,6 +19056,142 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTUnowned
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"unowned": @"unowned",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnowned alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"unowned"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"unowned"] doubleValue] != [dict[@"unowned"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUnowned.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUnowned.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTUnowned.properties.allValues];
+}
+@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
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"UseSerializers": @"useSerializers",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUseSerializers alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"UseSerializers"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"UseSerializers"] doubleValue] != [dict[@"UseSerializers"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUseSerializers.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUseSerializers.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTUseSerializers.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTUseSerializers.properties) {
+        id propertyName = QTUseSerializers.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTUshort
 + (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 35f52e1..57b4ec8 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
@@ -21128,6 +21128,7 @@ class Obj3 {
     private LocaleClass $locale; // json:Locale Required
     private Lock $lock; // json:lock Required
     private Long $long; // json:long Required
+    private MakeDictEncoder $makeDictEncoder; // json:makeDictEncoder Required
     private Map $map; // json:map Required
     private MapEntry $mapEntry; // json:MapEntry Required
     private MarshalJSON $marshalJSON; // json:MarshalJSON Required
@@ -21139,8 +21140,6 @@ class Obj3 {
     private Native $native; // json:native Required
     private NewClass $new; // json:new Required
     private Newtonsoft $newtonsoft; // json:newtonsoft Required
-    private Nil $nil; // json:nil Required
-    private No $no; // json:NO Required
 
     /**
      * @param int $dummy
@@ -21196,6 +21195,7 @@ class Obj3 {
      * @param LocaleClass $locale
      * @param Lock $lock
      * @param Long $long
+     * @param MakeDictEncoder $makeDictEncoder
      * @param Map $map
      * @param MapEntry $mapEntry
      * @param MarshalJSON $marshalJSON
@@ -21207,10 +21207,8 @@ class Obj3 {
      * @param Native $native
      * @param NewClass $new
      * @param Newtonsoft $newtonsoft
-     * @param Nil $nil
-     * @param No $no
      */
-    public function __construct(int $dummy, GotoClass $goto, Guard $guard, HasOwnProperty $hasOwnProperty, HashCode $hashCode, Hashable $hashable, Hasher $hasher, ID $id, IfClass $if, Imp $imp, ImplementsClass $implements, Implicit $implicit, Import $import, In $in, Indirect $indirect, Infix $infix, Init $init, Inline $inline, Inout $inout, InstanceofClass $instanceof, IntClass $int, 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, MarshalJSON $marshalJSON, MetadataPropertyHandling $metadataPropertyHandling, Module $module, Mutable $mutable, Mutating $mutating, NamespaceClass $namespace, Native $native, NewClass $new, Newtonsoft $newtonsoft, Nil $nil, No $no) {
+    public function __construct(int $dummy, GotoClass $goto, Guard $guard, HasOwnProperty $hasOwnProperty, HashCode $hashCode, Hashable $hashable, Hasher $hasher, ID $id, IfClass $if, Imp $imp, ImplementsClass $implements, Implicit $implicit, Import $import, In $in, Indirect $indirect, Infix $infix, Init $init, Inline $inline, Inout $inout, InstanceofClass $instanceof, IntClass $int, 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, MakeDictEncoder $makeDictEncoder, Map $map, MapEntry $mapEntry, MarshalJSON $marshalJSON, MetadataPropertyHandling $metadataPropertyHandling, Module $module, Mutable $mutable, Mutating $mutating, NamespaceClass $namespace, Native $native, NewClass $new, Newtonsoft $newtonsoft) {
         $this->dummy = $dummy;
         $this->goto = $goto;
         $this->guard = $guard;
@@ -21264,6 +21262,7 @@ class Obj3 {
         $this->locale = $locale;
         $this->lock = $lock;
         $this->long = $long;
+        $this->makeDictEncoder = $makeDictEncoder;
         $this->map = $map;
         $this->mapEntry = $mapEntry;
         $this->marshalJSON = $marshalJSON;
@@ -21275,8 +21274,6 @@ class Obj3 {
         $this->native = $native;
         $this->new = $new;
         $this->newtonsoft = $newtonsoft;
-        $this->nil = $nil;
-        $this->no = $no;
     }
 
     /**
@@ -23822,6 +23819,54 @@ class Obj3 {
         return Long::sample(); /*83:long*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return MakeDictEncoder
+     */
+    public static function fromMakeDictEncoder(stdClass $value): MakeDictEncoder {
+        return MakeDictEncoder::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toMakeDictEncoder(): stdClass {
+        if (Obj3::validateMakeDictEncoder($this->makeDictEncoder))  {
+            return $this->makeDictEncoder->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::makeDictEncoder');
+    }
+
+    /**
+     * @param MakeDictEncoder
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMakeDictEncoder(MakeDictEncoder $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return MakeDictEncoder
+     */
+    public function getMakeDictEncoder(): MakeDictEncoder {
+        if (Obj3::validateMakeDictEncoder($this->makeDictEncoder))  {
+            return $this->makeDictEncoder;
+        }
+        throw new Exception('never get to getMakeDictEncoder Obj3::makeDictEncoder');
+    }
+
+    /**
+     * @return MakeDictEncoder
+     */
+    public static function sampleMakeDictEncoder(): MakeDictEncoder {
+        return MakeDictEncoder::sample(); /*84:makeDictEncoder*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -23867,7 +23912,7 @@ class Obj3 {
      * @return Map
      */
     public static function sampleMap(): Map {
-        return Map::sample(); /*84:map*/
+        return Map::sample(); /*85:map*/
     }
 
     /**
@@ -23915,7 +23960,7 @@ class Obj3 {
      * @return MapEntry
      */
     public static function sampleMapEntry(): MapEntry {
-        return MapEntry::sample(); /*85:mapEntry*/
+        return MapEntry::sample(); /*86:mapEntry*/
     }
 
     /**
@@ -23963,7 +24008,7 @@ class Obj3 {
      * @return MarshalJSON
      */
     public static function sampleMarshalJSON(): MarshalJSON {
-        return MarshalJSON::sample(); /*86:marshalJSON*/
+        return MarshalJSON::sample(); /*87:marshalJSON*/
     }
 
     /**
@@ -24011,7 +24056,7 @@ class Obj3 {
      * @return MetadataPropertyHandling
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling {
-        return MetadataPropertyHandling::sample(); /*87:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*88:metadataPropertyHandling*/
     }
 
     /**
@@ -24059,7 +24104,7 @@ class Obj3 {
      * @return Module
      */
     public static function sampleModule(): Module {
-        return Module::sample(); /*88:module*/
+        return Module::sample(); /*89:module*/
     }
 
     /**
@@ -24107,7 +24152,7 @@ class Obj3 {
      * @return Mutable
      */
     public static function sampleMutable(): Mutable {
-        return Mutable::sample(); /*89:mutable*/
+        return Mutable::sample(); /*90:mutable*/
     }
 
     /**
@@ -24155,7 +24200,7 @@ class Obj3 {
      * @return Mutating
      */
     public static function sampleMutating(): Mutating {
-        return Mutating::sample(); /*90:mutating*/
+        return Mutating::sample(); /*91:mutating*/
     }
 
     /**
@@ -24203,7 +24248,7 @@ class Obj3 {
      * @return NamespaceClass
      */
     public static function sampleNamespace(): NamespaceClass {
-        return NamespaceClass::sample(); /*91:namespace*/
+        return NamespaceClass::sample(); /*92:namespace*/
     }
 
     /**
@@ -24251,7 +24296,7 @@ class Obj3 {
      * @return Native
      */
     public static function sampleNative(): Native {
-        return Native::sample(); /*92:native*/
+        return Native::sample(); /*93:native*/
     }
 
     /**
@@ -24299,7 +24344,7 @@ class Obj3 {
      * @return NewClass
      */
     public static function sampleNew(): NewClass {
-        return NewClass::sample(); /*93:new*/
+        return NewClass::sample(); /*94:new*/
     }
 
     /**
@@ -24347,103 +24392,7 @@ class Obj3 {
      * @return Newtonsoft
      */
     public static function sampleNewtonsoft(): Newtonsoft {
-        return Newtonsoft::sample(); /*94:newtonsoft*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Nil
-     */
-    public static function fromNil(stdClass $value): Nil {
-        return Nil::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNil(): stdClass {
-        if (Obj3::validateNil($this->nil))  {
-            return $this->nil->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::nil');
-    }
-
-    /**
-     * @param Nil
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNil(Nil $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Nil
-     */
-    public function getNil(): Nil {
-        if (Obj3::validateNil($this->nil))  {
-            return $this->nil;
-        }
-        throw new Exception('never get to getNil Obj3::nil');
-    }
-
-    /**
-     * @return Nil
-     */
-    public static function sampleNil(): Nil {
-        return Nil::sample(); /*95:nil*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return No
-     */
-    public static function fromNo(stdClass $value): No {
-        return No::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNo(): stdClass {
-        if (Obj3::validateNo($this->no))  {
-            return $this->no->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::no');
-    }
-
-    /**
-     * @param No
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNo(No $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return No
-     */
-    public function getNo(): No {
-        if (Obj3::validateNo($this->no))  {
-            return $this->no;
-        }
-        throw new Exception('never get to getNo Obj3::no');
-    }
-
-    /**
-     * @return No
-     */
-    public static function sampleNo(): No {
-        return No::sample(); /*96:no*/
+        return Newtonsoft::sample(); /*95:newtonsoft*/
     }
 
     /**
@@ -24504,6 +24453,7 @@ class Obj3 {
         || Obj3::validateLocale($this->locale)
         || Obj3::validateLock($this->lock)
         || Obj3::validateLong($this->long)
+        || Obj3::validateMakeDictEncoder($this->makeDictEncoder)
         || Obj3::validateMap($this->map)
         || Obj3::validateMapEntry($this->mapEntry)
         || Obj3::validateMarshalJSON($this->marshalJSON)
@@ -24514,9 +24464,7 @@ class Obj3 {
         || Obj3::validateNamespace($this->namespace)
         || Obj3::validateNative($this->native)
         || Obj3::validateNew($this->new)
-        || Obj3::validateNewtonsoft($this->newtonsoft)
-        || Obj3::validateNil($this->nil)
-        || Obj3::validateNo($this->no);
+        || Obj3::validateNewtonsoft($this->newtonsoft);
     }
 
     /**
@@ -24578,6 +24526,7 @@ class Obj3 {
         $out->{'Locale'} = $this->toLocale();
         $out->{'lock'} = $this->toLock();
         $out->{'long'} = $this->toLong();
+        $out->{'makeDictEncoder'} = $this->toMakeDictEncoder();
         $out->{'map'} = $this->toMap();
         $out->{'MapEntry'} = $this->toMapEntry();
         $out->{'MarshalJSON'} = $this->toMarshalJSON();
@@ -24589,8 +24538,6 @@ class Obj3 {
         $out->{'native'} = $this->toNative();
         $out->{'new'} = $this->toNew();
         $out->{'newtonsoft'} = $this->toNewtonsoft();
-        $out->{'nil'} = $this->toNil();
-        $out->{'NO'} = $this->toNo();
         return $out;
     }
 
@@ -24759,6 +24706,9 @@ class Obj3 {
         if (!property_exists($obj, 'long')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'makeDictEncoder')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'map')) {
             throw new Exception("Missing required property");
         }
@@ -24792,12 +24742,6 @@ class Obj3 {
         if (!property_exists($obj, 'newtonsoft')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'nil')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'NO')) {
-            throw new Exception("Missing required property");
-        }
         return new Obj3(
          Obj3::fromDummy($obj->{'dummy'})
         ,Obj3::fromGoto($obj->{'goto'})
@@ -24852,6 +24796,7 @@ class Obj3 {
         ,Obj3::fromLocale($obj->{'Locale'})
         ,Obj3::fromLock($obj->{'lock'})
         ,Obj3::fromLong($obj->{'long'})
+        ,Obj3::fromMakeDictEncoder($obj->{'makeDictEncoder'})
         ,Obj3::fromMap($obj->{'map'})
         ,Obj3::fromMapEntry($obj->{'MapEntry'})
         ,Obj3::fromMarshalJSON($obj->{'MarshalJSON'})
@@ -24863,8 +24808,6 @@ class Obj3 {
         ,Obj3::fromNative($obj->{'native'})
         ,Obj3::fromNew($obj->{'new'})
         ,Obj3::fromNewtonsoft($obj->{'newtonsoft'})
-        ,Obj3::fromNil($obj->{'nil'})
-        ,Obj3::fromNo($obj->{'NO'})
         );
     }
 
@@ -24926,6 +24869,7 @@ class Obj3 {
         ,Obj3::sampleLocale()
         ,Obj3::sampleLock()
         ,Obj3::sampleLong()
+        ,Obj3::sampleMakeDictEncoder()
         ,Obj3::sampleMap()
         ,Obj3::sampleMapEntry()
         ,Obj3::sampleMarshalJSON()
@@ -24937,8 +24881,6 @@ class Obj3 {
         ,Obj3::sampleNative()
         ,Obj3::sampleNew()
         ,Obj3::sampleNewtonsoft()
-        ,Obj3::sampleNil()
-        ,Obj3::sampleNo()
         );
     }
 }
@@ -30198,6 +30140,107 @@ class Long {
     }
 }
 
+// This is an autogenerated file:MakeDictEncoder
+
+class MakeDictEncoder {
+    private int $makeDictEncoder; // json:makeDictEncoder Required
+
+    /**
+     * @param int $makeDictEncoder
+     */
+    public function __construct(int $makeDictEncoder) {
+        $this->makeDictEncoder = $makeDictEncoder;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromMakeDictEncoder(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toMakeDictEncoder(): int {
+        if (MakeDictEncoder::validateMakeDictEncoder($this->makeDictEncoder))  {
+            return $this->makeDictEncoder; /*int*/
+        }
+        throw new Exception('never get to this MakeDictEncoder::makeDictEncoder');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMakeDictEncoder(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getMakeDictEncoder(): int {
+        if (MakeDictEncoder::validateMakeDictEncoder($this->makeDictEncoder))  {
+            return $this->makeDictEncoder;
+        }
+        throw new Exception('never get to getMakeDictEncoder MakeDictEncoder::makeDictEncoder');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleMakeDictEncoder(): int {
+        return 31; /*31:makeDictEncoder*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return MakeDictEncoder::validateMakeDictEncoder($this->makeDictEncoder);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'makeDictEncoder'} = $this->toMakeDictEncoder();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return MakeDictEncoder
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): MakeDictEncoder {
+        if (!property_exists($obj, 'makeDictEncoder')) {
+            throw new Exception("Missing required property");
+        }
+        return new MakeDictEncoder(
+         MakeDictEncoder::fromMakeDictEncoder($obj->{'makeDictEncoder'})
+        );
+    }
+
+    /**
+     * @return MakeDictEncoder
+     */
+    public static function sample(): MakeDictEncoder {
+        return new MakeDictEncoder(
+         MakeDictEncoder::sampleMakeDictEncoder()
+        );
+    }
+}
+
 // This is an autogenerated file:Map
 
 class Map {
@@ -31309,212 +31352,12 @@ class Newtonsoft {
     }
 }
 
-// This is an autogenerated file:Nil
-
-class Nil {
-    private int $nil; // json:nil Required
-
-    /**
-     * @param int $nil
-     */
-    public function __construct(int $nil) {
-        $this->nil = $nil;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromNil(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toNil(): int {
-        if (Nil::validateNil($this->nil))  {
-            return $this->nil; /*int*/
-        }
-        throw new Exception('never get to this Nil::nil');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNil(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getNil(): int {
-        if (Nil::validateNil($this->nil))  {
-            return $this->nil;
-        }
-        throw new Exception('never get to getNil Nil::nil');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleNil(): int {
-        return 31; /*31:nil*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Nil::validateNil($this->nil);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'nil'} = $this->toNil();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return Nil
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): Nil {
-        if (!property_exists($obj, 'nil')) {
-            throw new Exception("Missing required property");
-        }
-        return new Nil(
-         Nil::fromNil($obj->{'nil'})
-        );
-    }
-
-    /**
-     * @return Nil
-     */
-    public static function sample(): Nil {
-        return new Nil(
-         Nil::sampleNil()
-        );
-    }
-}
-
-// This is an autogenerated file:No
-
-class No {
-    private int $no; // json:NO Required
-
-    /**
-     * @param int $no
-     */
-    public function __construct(int $no) {
-        $this->no = $no;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromNo(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toNo(): int {
-        if (No::validateNo($this->no))  {
-            return $this->no; /*int*/
-        }
-        throw new Exception('never get to this No::no');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNo(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getNo(): int {
-        if (No::validateNo($this->no))  {
-            return $this->no;
-        }
-        throw new Exception('never get to getNo No::no');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleNo(): int {
-        return 31; /*31:no*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return No::validateNo($this->no);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'NO'} = $this->toNo();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return No
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): No {
-        if (!property_exists($obj, 'NO')) {
-            throw new Exception("Missing required property");
-        }
-        return new No(
-         No::fromNo($obj->{'NO'})
-        );
-    }
-
-    /**
-     * @return No
-     */
-    public static function sample(): No {
-        return new No(
-         No::sampleNo()
-        );
-    }
-}
-
-// This is an autogenerated file:Obj4
+// This is an autogenerated file:Obj4
 
 class Obj4 {
     private int $dummy; // json:dummy Required
+    private Nil $nil; // json:nil Required
+    private No $no; // json:NO Required
     private NoSuchMethod $noSuchMethod; // json:noSuchMethod Required
     private Noexcept $noexcept; // json:noexcept Required
     private Nonatomic $nonatomic; // json:nonatomic Required
@@ -31577,11 +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
 
     /**
      * @param int $dummy
+     * @param Nil $nil
+     * @param No $no
      * @param NoSuchMethod $noSuchMethod
      * @param Noexcept $noexcept
      * @param Nonatomic $nonatomic
@@ -31644,11 +31487,11 @@ class Obj4 {
      * @param RuntimeType $runtimeType
      * @param S $s
      * @param Sbyte $sbyte
-     * @param Sealed $sealed
-     * @param Sel $sel
      */
-    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, 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) {
+    public function __construct(int $dummy, Nil $nil, No $no, NoSuchMethod $noSuchMethod, Noexcept $noexcept, Nonatomic $nonatomic, None $none, Nonlocal $nonlocal, Nonmutating $nonmutating, Not $not, NotEq $notEq, NSError $nsError, NSObject $nsObject, NSString $nsString, NULLClass $null, 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) {
         $this->dummy = $dummy;
+        $this->nil = $nil;
+        $this->no = $no;
         $this->noSuchMethod = $noSuchMethod;
         $this->noexcept = $noexcept;
         $this->nonatomic = $nonatomic;
@@ -31711,8 +31554,6 @@ class Obj4 {
         $this->runtimeType = $runtimeType;
         $this->s = $s;
         $this->sbyte = $sbyte;
-        $this->sealed = $sealed;
-        $this->sel = $sel;
     }
 
     /**
@@ -31762,6 +31603,102 @@ class Obj4 {
         return 31; /*31:dummy*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Nil
+     */
+    public static function fromNil(stdClass $value): Nil {
+        return Nil::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNil(): stdClass {
+        if (Obj4::validateNil($this->nil))  {
+            return $this->nil->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::nil');
+    }
+
+    /**
+     * @param Nil
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNil(Nil $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Nil
+     */
+    public function getNil(): Nil {
+        if (Obj4::validateNil($this->nil))  {
+            return $this->nil;
+        }
+        throw new Exception('never get to getNil Obj4::nil');
+    }
+
+    /**
+     * @return Nil
+     */
+    public static function sampleNil(): Nil {
+        return Nil::sample(); /*32:nil*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return No
+     */
+    public static function fromNo(stdClass $value): No {
+        return No::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNo(): stdClass {
+        if (Obj4::validateNo($this->no))  {
+            return $this->no->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::no');
+    }
+
+    /**
+     * @param No
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNo(No $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return No
+     */
+    public function getNo(): No {
+        if (Obj4::validateNo($this->no))  {
+            return $this->no;
+        }
+        throw new Exception('never get to getNo Obj4::no');
+    }
+
+    /**
+     * @return No
+     */
+    public static function sampleNo(): No {
+        return No::sample(); /*33:no*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -31807,7 +31744,7 @@ class Obj4 {
      * @return NoSuchMethod
      */
     public static function sampleNoSuchMethod(): NoSuchMethod {
-        return NoSuchMethod::sample(); /*32:noSuchMethod*/
+        return NoSuchMethod::sample(); /*34:noSuchMethod*/
     }
 
     /**
@@ -31855,7 +31792,7 @@ class Obj4 {
      * @return Noexcept
      */
     public static function sampleNoexcept(): Noexcept {
-        return Noexcept::sample(); /*33:noexcept*/
+        return Noexcept::sample(); /*35:noexcept*/
     }
 
     /**
@@ -31903,7 +31840,7 @@ class Obj4 {
      * @return Nonatomic
      */
     public static function sampleNonatomic(): Nonatomic {
-        return Nonatomic::sample(); /*34:nonatomic*/
+        return Nonatomic::sample(); /*36:nonatomic*/
     }
 
     /**
@@ -31951,7 +31888,7 @@ class Obj4 {
      * @return None
      */
     public static function sampleNone(): None {
-        return None::sample(); /*35:none*/
+        return None::sample(); /*37:none*/
     }
 
     /**
@@ -31999,7 +31936,7 @@ class Obj4 {
      * @return Nonlocal
      */
     public static function sampleNonlocal(): Nonlocal {
-        return Nonlocal::sample(); /*36:nonlocal*/
+        return Nonlocal::sample(); /*38:nonlocal*/
     }
 
     /**
@@ -32047,7 +31984,7 @@ class Obj4 {
      * @return Nonmutating
      */
     public static function sampleNonmutating(): Nonmutating {
-        return Nonmutating::sample(); /*37:nonmutating*/
+        return Nonmutating::sample(); /*39:nonmutating*/
     }
 
     /**
@@ -32095,7 +32032,7 @@ class Obj4 {
      * @return Not
      */
     public static function sampleNot(): Not {
-        return Not::sample(); /*38:not*/
+        return Not::sample(); /*40:not*/
     }
 
     /**
@@ -32143,7 +32080,7 @@ class Obj4 {
      * @return NotEq
      */
     public static function sampleNotEq(): NotEq {
-        return NotEq::sample(); /*39:notEq*/
+        return NotEq::sample(); /*41:notEq*/
     }
 
     /**
@@ -32191,7 +32128,7 @@ class Obj4 {
      * @return NSError
      */
     public static function sampleNSError(): NSError {
-        return NSError::sample(); /*40:nsError*/
+        return NSError::sample(); /*42:nsError*/
     }
 
     /**
@@ -32239,7 +32176,7 @@ class Obj4 {
      * @return NSObject
      */
     public static function sampleNSObject(): NSObject {
-        return NSObject::sample(); /*41:nsObject*/
+        return NSObject::sample(); /*43:nsObject*/
     }
 
     /**
@@ -32287,7 +32224,7 @@ class Obj4 {
      * @return NSString
      */
     public static function sampleNSString(): NSString {
-        return NSString::sample(); /*42:nsString*/
+        return NSString::sample(); /*44:nsString*/
     }
 
     /**
@@ -32335,7 +32272,7 @@ class Obj4 {
      * @return NULLClass
      */
     public static function sampleNull(): NULLClass {
-        return NULLClass::sample(); /*43:null*/
+        return NULLClass::sample(); /*45:null*/
     }
 
     /**
@@ -32383,7 +32320,7 @@ class Obj4 {
      * @return Nullptr
      */
     public static function sampleNullptr(): Nullptr {
-        return Nullptr::sample(); /*44:nullptr*/
+        return Nullptr::sample(); /*46:nullptr*/
     }
 
     /**
@@ -32431,7 +32368,7 @@ class Obj4 {
      * @return Number
      */
     public static function sampleNumber(): Number {
-        return Number::sample(); /*45:number*/
+        return Number::sample(); /*47:number*/
     }
 
     /**
@@ -32479,7 +32416,7 @@ class Obj4 {
      * @return NoneClass
      */
     public static function sampleObj4None(): NoneClass {
-        return NoneClass::sample(); /*46:obj4None*/
+        return NoneClass::sample(); /*48:obj4None*/
     }
 
     /**
@@ -32527,7 +32464,7 @@ class Obj4 {
      * @return Obj4Null
      */
     public static function sampleObj4Null(): Obj4Null {
-        return Obj4Null::sample(); /*47:obj4Null*/
+        return Obj4Null::sample(); /*49:obj4Null*/
     }
 
     /**
@@ -32575,7 +32512,7 @@ class Obj4 {
      * @return ProtocolClass
      */
     public static function sampleObj4Protocol(): ProtocolClass {
-        return ProtocolClass::sample(); /*48:obj4Protocol*/
+        return ProtocolClass::sample(); /*50:obj4Protocol*/
     }
 
     /**
@@ -32623,7 +32560,7 @@ class Obj4 {
      * @return ObjectClass
      */
     public static function sampleObject(): ObjectClass {
-        return ObjectClass::sample(); /*49:object*/
+        return ObjectClass::sample(); /*51:object*/
     }
 
     /**
@@ -32671,7 +32608,7 @@ class Obj4 {
      * @return ObjectMapper
      */
     public static function sampleObjectMapper(): ObjectMapper {
-        return ObjectMapper::sample(); /*50:objectMapper*/
+        return ObjectMapper::sample(); /*52:objectMapper*/
     }
 
     /**
@@ -32719,7 +32656,7 @@ class Obj4 {
      * @return Of
      */
     public static function sampleOf(): Of {
-        return Of::sample(); /*51:of*/
+        return Of::sample(); /*53:of*/
     }
 
     /**
@@ -32767,7 +32704,7 @@ class Obj4 {
      * @return Oneway
      */
     public static function sampleOneway(): Oneway {
-        return Oneway::sample(); /*52:oneway*/
+        return Oneway::sample(); /*54:oneway*/
     }
 
     /**
@@ -32815,7 +32752,7 @@ class Obj4 {
      * @return Open
      */
     public static function sampleOpen(): Open {
-        return Open::sample(); /*53:open*/
+        return Open::sample(); /*55:open*/
     }
 
     /**
@@ -32863,7 +32800,7 @@ class Obj4 {
      * @return Operator
      */
     public static function sampleOperator(): Operator {
-        return Operator::sample(); /*54:operator*/
+        return Operator::sample(); /*56:operator*/
     }
 
     /**
@@ -32911,7 +32848,7 @@ class Obj4 {
      * @return Optional
      */
     public static function sampleOptional(): Optional {
-        return Optional::sample(); /*55:optional*/
+        return Optional::sample(); /*57:optional*/
     }
 
     /**
@@ -32959,7 +32896,7 @@ class Obj4 {
      * @return OrClass
      */
     public static function sampleOr(): OrClass {
-        return OrClass::sample(); /*56:or*/
+        return OrClass::sample(); /*58:or*/
     }
 
     /**
@@ -33007,7 +32944,7 @@ class Obj4 {
      * @return OrEq
      */
     public static function sampleOrEq(): OrEq {
-        return OrEq::sample(); /*57:orEq*/
+        return OrEq::sample(); /*59:orEq*/
     }
 
     /**
@@ -33055,7 +32992,7 @@ class Obj4 {
      * @return Out
      */
     public static function sampleOut(): Out {
-        return Out::sample(); /*58:out*/
+        return Out::sample(); /*60:out*/
     }
 
     /**
@@ -33103,7 +33040,7 @@ class Obj4 {
      * @return OverrideClass
      */
     public static function sampleOverride(): OverrideClass {
-        return OverrideClass::sample(); /*59:override*/
+        return OverrideClass::sample(); /*61:override*/
     }
 
     /**
@@ -33151,7 +33088,7 @@ class Obj4 {
      * @return Package
      */
     public static function samplePackage(): Package {
-        return Package::sample(); /*60:package*/
+        return Package::sample(); /*62:package*/
     }
 
     /**
@@ -33199,7 +33136,7 @@ class Obj4 {
      * @return Params
      */
     public static function sampleParams(): Params {
-        return Params::sample(); /*61:params*/
+        return Params::sample(); /*63:params*/
     }
 
     /**
@@ -33247,7 +33184,7 @@ class Obj4 {
      * @return Pass
      */
     public static function samplePass(): Pass {
-        return Pass::sample(); /*62:pass*/
+        return Pass::sample(); /*64:pass*/
     }
 
     /**
@@ -33295,7 +33232,7 @@ class Obj4 {
      * @return Port
      */
     public static function samplePort(): Port {
-        return Port::sample(); /*63:port*/
+        return Port::sample(); /*65:port*/
     }
 
     /**
@@ -33343,7 +33280,7 @@ class Obj4 {
      * @return Postfix
      */
     public static function samplePostfix(): Postfix {
-        return Postfix::sample(); /*64:postfix*/
+        return Postfix::sample(); /*66:postfix*/
     }
 
     /**
@@ -33391,7 +33328,7 @@ class Obj4 {
      * @return Precedence
      */
     public static function samplePrecedence(): Precedence {
-        return Precedence::sample(); /*65:precedence*/
+        return Precedence::sample(); /*67:precedence*/
     }
 
     /**
@@ -33439,7 +33376,7 @@ class Obj4 {
      * @return Prefix
      */
     public static function samplePrefix(): Prefix {
-        return Prefix::sample(); /*66:prefix*/
+        return Prefix::sample(); /*68:prefix*/
     }
 
     /**
@@ -33487,7 +33424,7 @@ class Obj4 {
      * @return PrintClass
      */
     public static function samplePrint(): PrintClass {
-        return PrintClass::sample(); /*67:print*/
+        return PrintClass::sample(); /*69:print*/
     }
 
     /**
@@ -33535,7 +33472,7 @@ class Obj4 {
      * @return PrintMembers
      */
     public static function samplePrintMembers(): PrintMembers {
-        return PrintMembers::sample(); /*68:printMembers*/
+        return PrintMembers::sample(); /*70:printMembers*/
     }
 
     /**
@@ -33583,7 +33520,7 @@ class Obj4 {
      * @return Printf
      */
     public static function samplePrintf(): Printf {
-        return Printf::sample(); /*69:printf*/
+        return Printf::sample(); /*71:printf*/
     }
 
     /**
@@ -33631,7 +33568,7 @@ class Obj4 {
      * @return PrivateClass
      */
     public static function samplePrivate(): PrivateClass {
-        return PrivateClass::sample(); /*70:private*/
+        return PrivateClass::sample(); /*72:private*/
     }
 
     /**
@@ -33679,7 +33616,7 @@ class Obj4 {
      * @return ProtectedClass
      */
     public static function sampleProtected(): ProtectedClass {
-        return ProtectedClass::sample(); /*71:protected*/
+        return ProtectedClass::sample(); /*73:protected*/
     }
 
     /**
@@ -33727,7 +33664,7 @@ class Obj4 {
      * @return Protocol
      */
     public static function sampleProtocol(): Protocol {
-        return Protocol::sample(); /*72:protocol*/
+        return Protocol::sample(); /*74:protocol*/
     }
 
     /**
@@ -33775,7 +33712,7 @@ class Obj4 {
      * @return PublicClass
      */
     public static function samplePublic(): PublicClass {
-        return PublicClass::sample(); /*73:public*/
+        return PublicClass::sample(); /*75:public*/
     }
 
     /**
@@ -33823,7 +33760,7 @@ class Obj4 {
      * @return Quicktype
      */
     public static function sampleQuicktype(): Quicktype {
-        return Quicktype::sample(); /*74:quicktype*/
+        return Quicktype::sample(); /*76:quicktype*/
     }
 
     /**
@@ -33871,7 +33808,7 @@ class Obj4 {
      * @return Raise
      */
     public static function sampleRaise(): Raise {
-        return Raise::sample(); /*75:raise*/
+        return Raise::sample(); /*77:raise*/
     }
 
     /**
@@ -33919,7 +33856,7 @@ class Obj4 {
      * @return Range
      */
     public static function sampleRange(): Range {
-        return Range::sample(); /*76:range*/
+        return Range::sample(); /*78:range*/
     }
 
     /**
@@ -33967,7 +33904,7 @@ class Obj4 {
      * @return ReadonlyClass
      */
     public static function sampleReadonly(): ReadonlyClass {
-        return ReadonlyClass::sample(); /*77:readonly*/
+        return ReadonlyClass::sample(); /*79:readonly*/
     }
 
     /**
@@ -34015,7 +33952,7 @@ class Obj4 {
      * @return Ref
      */
     public static function sampleRef(): Ref {
-        return Ref::sample(); /*78:ref*/
+        return Ref::sample(); /*80:ref*/
     }
 
     /**
@@ -34063,7 +34000,7 @@ class Obj4 {
      * @return RegExp
      */
     public static function sampleRegExp(): RegExp {
-        return RegExp::sample(); /*79:regExp*/
+        return RegExp::sample(); /*81:regExp*/
     }
 
     /**
@@ -34111,7 +34048,7 @@ class Obj4 {
      * @return Register
      */
     public static function sampleRegister(): Register {
-        return Register::sample(); /*80:register*/
+        return Register::sample(); /*82:register*/
     }
 
     /**
@@ -34159,7 +34096,7 @@ class Obj4 {
      * @return ReinterpretCast
      */
     public static function sampleReinterpretCast(): ReinterpretCast {
-        return ReinterpretCast::sample(); /*81:reinterpretCast*/
+        return ReinterpretCast::sample(); /*83:reinterpretCast*/
     }
 
     /**
@@ -34207,7 +34144,7 @@ class Obj4 {
      * @return Repeat
      */
     public static function sampleRepeat(): Repeat {
-        return Repeat::sample(); /*82:repeat*/
+        return Repeat::sample(); /*84:repeat*/
     }
 
     /**
@@ -34255,7 +34192,7 @@ class Obj4 {
      * @return RequireClass
      */
     public static function sampleRequire(): RequireClass {
-        return RequireClass::sample(); /*83:require*/
+        return RequireClass::sample(); /*85:require*/
     }
 
     /**
@@ -34303,7 +34240,7 @@ class Obj4 {
      * @return Required
      */
     public static function sampleRequired(): Required {
-        return Required::sample(); /*84:required*/
+        return Required::sample(); /*86:required*/
     }
 
     /**
@@ -34351,7 +34288,7 @@ class Obj4 {
      * @return Requires
      */
     public static function sampleRequires(): Requires {
-        return Requires::sample(); /*85:requires*/
+        return Requires::sample(); /*87:requires*/
     }
 
     /**
@@ -34399,7 +34336,7 @@ class Obj4 {
      * @return Restrict
      */
     public static function sampleRestrict(): Restrict {
-        return Restrict::sample(); /*86:restrict*/
+        return Restrict::sample(); /*88:restrict*/
     }
 
     /**
@@ -34447,7 +34384,7 @@ class Obj4 {
      * @return Retain
      */
     public static function sampleRetain(): Retain {
-        return Retain::sample(); /*87:retain*/
+        return Retain::sample(); /*89:retain*/
     }
 
     /**
@@ -34495,7 +34432,7 @@ class Obj4 {
      * @return Rethrows
      */
     public static function sampleRethrows(): Rethrows {
-        return Rethrows::sample(); /*88:rethrows*/
+        return Rethrows::sample(); /*90:rethrows*/
     }
 
     /**
@@ -34543,7 +34480,7 @@ class Obj4 {
      * @return ReturnClass
      */
     public static function sampleReturn(): ReturnClass {
-        return ReturnClass::sample(); /*89:return*/
+        return ReturnClass::sample(); /*91:return*/
     }
 
     /**
@@ -34591,7 +34528,7 @@ class Obj4 {
      * @return Right
      */
     public static function sampleRight(): Right {
-        return Right::sample(); /*90:right*/
+        return Right::sample(); /*92:right*/
     }
 
     /**
@@ -34639,7 +34576,7 @@ class Obj4 {
      * @return RuntimeType
      */
     public static function sampleRuntimeType(): RuntimeType {
-        return RuntimeType::sample(); /*91:runtimeType*/
+        return RuntimeType::sample(); /*93:runtimeType*/
     }
 
     /**
@@ -34687,7 +34624,7 @@ class Obj4 {
      * @return S
      */
     public static function sampleS(): S {
-        return S::sample(); /*92:s*/
+        return S::sample(); /*94:s*/
     }
 
     /**
@@ -34735,111 +34672,17 @@ class Obj4 {
      * @return Sbyte
      */
     public static function sampleSbyte(): Sbyte {
-        return Sbyte::sample(); /*93:sbyte*/
+        return Sbyte::sample(); /*95: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(); /*94: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(); /*95:sel*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
+     * @return bool
      */
     public function validate(): bool {
         return Obj4::validateDummy($this->dummy)
+        || Obj4::validateNil($this->nil)
+        || Obj4::validateNo($this->no)
         || Obj4::validateNoSuchMethod($this->noSuchMethod)
         || Obj4::validateNoexcept($this->noexcept)
         || Obj4::validateNonatomic($this->nonatomic)
@@ -34901,9 +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::validateSbyte($this->sbyte);
     }
 
     /**
@@ -34913,6 +34754,8 @@ class Obj4 {
     public function to(): stdClass  {
         $out = new stdClass();
         $out->{'dummy'} = $this->toDummy();
+        $out->{'nil'} = $this->toNil();
+        $out->{'NO'} = $this->toNo();
         $out->{'noSuchMethod'} = $this->toNoSuchMethod();
         $out->{'noexcept'} = $this->toNoexcept();
         $out->{'nonatomic'} = $this->toNonatomic();
@@ -34975,8 +34818,6 @@ class Obj4 {
         $out->{'runtimeType'} = $this->toRuntimeType();
         $out->{'s'} = $this->toS();
         $out->{'sbyte'} = $this->toSbyte();
-        $out->{'sealed'} = $this->toSealed();
-        $out->{'SEL'} = $this->toSel();
         return $out;
     }
 
@@ -34989,6 +34830,12 @@ class Obj4 {
         if (!property_exists($obj, 'dummy')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'nil')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'NO')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'noSuchMethod')) {
             throw new Exception("Missing required property");
         }
@@ -35175,14 +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");
-        }
         return new Obj4(
          Obj4::fromDummy($obj->{'dummy'})
+        ,Obj4::fromNil($obj->{'nil'})
+        ,Obj4::fromNo($obj->{'NO'})
         ,Obj4::fromNoSuchMethod($obj->{'noSuchMethod'})
         ,Obj4::fromNoexcept($obj->{'noexcept'})
         ,Obj4::fromNonatomic($obj->{'nonatomic'})
@@ -35245,8 +35088,6 @@ class Obj4 {
         ,Obj4::fromRuntimeType($obj->{'runtimeType'})
         ,Obj4::fromS($obj->{'s'})
         ,Obj4::fromSbyte($obj->{'sbyte'})
-        ,Obj4::fromSealed($obj->{'sealed'})
-        ,Obj4::fromSel($obj->{'SEL'})
         );
     }
 
@@ -35256,6 +35097,8 @@ class Obj4 {
     public static function sample(): Obj4 {
         return new Obj4(
          Obj4::sampleDummy()
+        ,Obj4::sampleNil()
+        ,Obj4::sampleNo()
         ,Obj4::sampleNoSuchMethod()
         ,Obj4::sampleNoexcept()
         ,Obj4::sampleNonatomic()
@@ -35318,22 +35161,20 @@ class Obj4 {
         ,Obj4::sampleRuntimeType()
         ,Obj4::sampleS()
         ,Obj4::sampleSbyte()
-        ,Obj4::sampleSealed()
-        ,Obj4::sampleSel()
         );
     }
 }
 
-// This is an autogenerated file:NoSuchMethod
+// This is an autogenerated file:Nil
 
-class NoSuchMethod {
-    private int $noSuchMethod; // json:noSuchMethod Required
+class Nil {
+    private int $nil; // json:nil Required
 
     /**
-     * @param int $noSuchMethod
+     * @param int $nil
      */
-    public function __construct(int $noSuchMethod) {
-        $this->noSuchMethod = $noSuchMethod;
+    public function __construct(int $nil) {
+        $this->nil = $nil;
     }
 
     /**
@@ -35341,7 +35182,7 @@ class NoSuchMethod {
      * @throws Exception
      * @return int
      */
-    public static function fromNoSuchMethod(int $value): int {
+    public static function fromNil(int $value): int {
         return $value; /*int*/
     }
 
@@ -35349,11 +35190,11 @@ class NoSuchMethod {
      * @throws Exception
      * @return int
      */
-    public function toNoSuchMethod(): int {
-        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
-            return $this->noSuchMethod; /*int*/
+    public function toNil(): int {
+        if (Nil::validateNil($this->nil))  {
+            return $this->nil; /*int*/
         }
-        throw new Exception('never get to this NoSuchMethod::noSuchMethod');
+        throw new Exception('never get to this Nil::nil');
     }
 
     /**
@@ -35361,7 +35202,7 @@ class NoSuchMethod {
      * @return bool
      * @throws Exception
      */
-    public static function validateNoSuchMethod(int $value): bool {
+    public static function validateNil(int $value): bool {
         return true;
     }
 
@@ -35369,18 +35210,18 @@ class NoSuchMethod {
      * @throws Exception
      * @return int
      */
-    public function getNoSuchMethod(): int {
-        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
-            return $this->noSuchMethod;
+    public function getNil(): int {
+        if (Nil::validateNil($this->nil))  {
+            return $this->nil;
         }
-        throw new Exception('never get to getNoSuchMethod NoSuchMethod::noSuchMethod');
+        throw new Exception('never get to getNil Nil::nil');
     }
 
     /**
      * @return int
      */
-    public static function sampleNoSuchMethod(): int {
-        return 31; /*31:noSuchMethod*/
+    public static function sampleNil(): int {
+        return 31; /*31:nil*/
     }
 
     /**
@@ -35388,7 +35229,7 @@ class NoSuchMethod {
      * @return bool
      */
     public function validate(): bool {
-        return NoSuchMethod::validateNoSuchMethod($this->noSuchMethod);
+        return Nil::validateNil($this->nil);
     }
 
     /**
@@ -35397,44 +35238,44 @@ class NoSuchMethod {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'noSuchMethod'} = $this->toNoSuchMethod();
+        $out->{'nil'} = $this->toNil();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NoSuchMethod
+     * @return Nil
      * @throws Exception
      */
-    public static function from(stdClass $obj): NoSuchMethod {
-        if (!property_exists($obj, 'noSuchMethod')) {
+    public static function from(stdClass $obj): Nil {
+        if (!property_exists($obj, 'nil')) {
             throw new Exception("Missing required property");
         }
-        return new NoSuchMethod(
-         NoSuchMethod::fromNoSuchMethod($obj->{'noSuchMethod'})
+        return new Nil(
+         Nil::fromNil($obj->{'nil'})
         );
     }
 
     /**
-     * @return NoSuchMethod
+     * @return Nil
      */
-    public static function sample(): NoSuchMethod {
-        return new NoSuchMethod(
-         NoSuchMethod::sampleNoSuchMethod()
+    public static function sample(): Nil {
+        return new Nil(
+         Nil::sampleNil()
         );
     }
 }
 
-// This is an autogenerated file:Noexcept
+// This is an autogenerated file:No
 
-class Noexcept {
-    private int $noexcept; // json:noexcept Required
+class No {
+    private int $no; // json:NO Required
 
     /**
-     * @param int $noexcept
+     * @param int $no
      */
-    public function __construct(int $noexcept) {
-        $this->noexcept = $noexcept;
+    public function __construct(int $no) {
+        $this->no = $no;
     }
 
     /**
@@ -35442,7 +35283,7 @@ class Noexcept {
      * @throws Exception
      * @return int
      */
-    public static function fromNoexcept(int $value): int {
+    public static function fromNo(int $value): int {
         return $value; /*int*/
     }
 
@@ -35450,11 +35291,11 @@ class Noexcept {
      * @throws Exception
      * @return int
      */
-    public function toNoexcept(): int {
-        if (Noexcept::validateNoexcept($this->noexcept))  {
-            return $this->noexcept; /*int*/
+    public function toNo(): int {
+        if (No::validateNo($this->no))  {
+            return $this->no; /*int*/
         }
-        throw new Exception('never get to this Noexcept::noexcept');
+        throw new Exception('never get to this No::no');
     }
 
     /**
@@ -35462,7 +35303,7 @@ class Noexcept {
      * @return bool
      * @throws Exception
      */
-    public static function validateNoexcept(int $value): bool {
+    public static function validateNo(int $value): bool {
         return true;
     }
 
@@ -35470,18 +35311,18 @@ class Noexcept {
      * @throws Exception
      * @return int
      */
-    public function getNoexcept(): int {
-        if (Noexcept::validateNoexcept($this->noexcept))  {
-            return $this->noexcept;
+    public function getNo(): int {
+        if (No::validateNo($this->no))  {
+            return $this->no;
         }
-        throw new Exception('never get to getNoexcept Noexcept::noexcept');
+        throw new Exception('never get to getNo No::no');
     }
 
     /**
      * @return int
      */
-    public static function sampleNoexcept(): int {
-        return 31; /*31:noexcept*/
+    public static function sampleNo(): int {
+        return 31; /*31:no*/
     }
 
     /**
@@ -35489,7 +35330,7 @@ class Noexcept {
      * @return bool
      */
     public function validate(): bool {
-        return Noexcept::validateNoexcept($this->noexcept);
+        return No::validateNo($this->no);
     }
 
     /**
@@ -35498,44 +35339,44 @@ class Noexcept {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'noexcept'} = $this->toNoexcept();
+        $out->{'NO'} = $this->toNo();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Noexcept
+     * @return No
      * @throws Exception
      */
-    public static function from(stdClass $obj): Noexcept {
-        if (!property_exists($obj, 'noexcept')) {
+    public static function from(stdClass $obj): No {
+        if (!property_exists($obj, 'NO')) {
             throw new Exception("Missing required property");
         }
-        return new Noexcept(
-         Noexcept::fromNoexcept($obj->{'noexcept'})
+        return new No(
+         No::fromNo($obj->{'NO'})
         );
     }
 
     /**
-     * @return Noexcept
+     * @return No
      */
-    public static function sample(): Noexcept {
-        return new Noexcept(
-         Noexcept::sampleNoexcept()
+    public static function sample(): No {
+        return new No(
+         No::sampleNo()
         );
     }
 }
 
-// This is an autogenerated file:Nonatomic
+// This is an autogenerated file:NoSuchMethod
 
-class Nonatomic {
-    private int $nonatomic; // json:nonatomic Required
+class NoSuchMethod {
+    private int $noSuchMethod; // json:noSuchMethod Required
 
     /**
-     * @param int $nonatomic
+     * @param int $noSuchMethod
      */
-    public function __construct(int $nonatomic) {
-        $this->nonatomic = $nonatomic;
+    public function __construct(int $noSuchMethod) {
+        $this->noSuchMethod = $noSuchMethod;
     }
 
     /**
@@ -35543,7 +35384,7 @@ class Nonatomic {
      * @throws Exception
      * @return int
      */
-    public static function fromNonatomic(int $value): int {
+    public static function fromNoSuchMethod(int $value): int {
         return $value; /*int*/
     }
 
@@ -35551,11 +35392,11 @@ class Nonatomic {
      * @throws Exception
      * @return int
      */
-    public function toNonatomic(): int {
-        if (Nonatomic::validateNonatomic($this->nonatomic))  {
-            return $this->nonatomic; /*int*/
+    public function toNoSuchMethod(): int {
+        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
+            return $this->noSuchMethod; /*int*/
         }
-        throw new Exception('never get to this Nonatomic::nonatomic');
+        throw new Exception('never get to this NoSuchMethod::noSuchMethod');
     }
 
     /**
@@ -35563,7 +35404,7 @@ class Nonatomic {
      * @return bool
      * @throws Exception
      */
-    public static function validateNonatomic(int $value): bool {
+    public static function validateNoSuchMethod(int $value): bool {
         return true;
     }
 
@@ -35571,18 +35412,18 @@ class Nonatomic {
      * @throws Exception
      * @return int
      */
-    public function getNonatomic(): int {
-        if (Nonatomic::validateNonatomic($this->nonatomic))  {
-            return $this->nonatomic;
+    public function getNoSuchMethod(): int {
+        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
+            return $this->noSuchMethod;
         }
-        throw new Exception('never get to getNonatomic Nonatomic::nonatomic');
+        throw new Exception('never get to getNoSuchMethod NoSuchMethod::noSuchMethod');
     }
 
     /**
      * @return int
      */
-    public static function sampleNonatomic(): int {
-        return 31; /*31:nonatomic*/
+    public static function sampleNoSuchMethod(): int {
+        return 31; /*31:noSuchMethod*/
     }
 
     /**
@@ -35590,7 +35431,7 @@ class Nonatomic {
      * @return bool
      */
     public function validate(): bool {
-        return Nonatomic::validateNonatomic($this->nonatomic);
+        return NoSuchMethod::validateNoSuchMethod($this->noSuchMethod);
     }
 
     /**
@@ -35599,13 +35440,215 @@ class Nonatomic {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'nonatomic'} = $this->toNonatomic();
+        $out->{'noSuchMethod'} = $this->toNoSuchMethod();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Nonatomic
+     * @return NoSuchMethod
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NoSuchMethod {
+        if (!property_exists($obj, 'noSuchMethod')) {
+            throw new Exception("Missing required property");
+        }
+        return new NoSuchMethod(
+         NoSuchMethod::fromNoSuchMethod($obj->{'noSuchMethod'})
+        );
+    }
+
+    /**
+     * @return NoSuchMethod
+     */
+    public static function sample(): NoSuchMethod {
+        return new NoSuchMethod(
+         NoSuchMethod::sampleNoSuchMethod()
+        );
+    }
+}
+
+// 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 {
+    private int $nonatomic; // json:nonatomic Required
+
+    /**
+     * @param int $nonatomic
+     */
+    public function __construct(int $nonatomic) {
+        $this->nonatomic = $nonatomic;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNonatomic(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNonatomic(): int {
+        if (Nonatomic::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic; /*int*/
+        }
+        throw new Exception('never get to this Nonatomic::nonatomic');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNonatomic(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNonatomic(): int {
+        if (Nonatomic::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic;
+        }
+        throw new Exception('never get to getNonatomic Nonatomic::nonatomic');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNonatomic(): int {
+        return 31; /*31:nonatomic*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Nonatomic::validateNonatomic($this->nonatomic);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'nonatomic'} = $this->toNonatomic();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Nonatomic
      * @throws Exception
      */
     public static function from(stdClass $obj): Nonatomic {
@@ -41589,209 +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:Obj5
+// This is an autogenerated file:Obj5
 
 class Obj5 {
     private int $dummy; // json:dummy Required
@@ -41801,6 +41642,8 @@ 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
@@ -41857,9 +41700,6 @@ class Obj5 {
     private Undefined $undefined; // json:undefined Required
     private Union $union; // json:union Required
     private UnmarshalJSON $unmarshalJSON; // json:UnmarshalJSON Required
-    private Unowned $unowned; // json:unowned Required
-    private Unsafe $unsafe; // json:unsafe Required
-    private UseSerializers $useSerializers; // json:UseSerializers Required
 
     /**
      * @param int $dummy
@@ -41869,6 +41709,8 @@ 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
@@ -41925,11 +41767,8 @@ class Obj5 {
      * @param Undefined $undefined
      * @param Union $union
      * @param UnmarshalJSON $unmarshalJSON
-     * @param Unowned $unowned
-     * @param Unsafe $unsafe
-     * @param UseSerializers $useSerializers
      */
-    public function __construct(int $dummy, KSerializer $kSerializer, Obj5Self $obj5Self, This $obj5This, Obj5True $obj5True, TypeClass $obj5Type, PrimitiveKind $primitiveKind, 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, ToDict $toDict, 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, UnmarshalJSON $unmarshalJSON, Unowned $unowned, Unsafe $unsafe, UseSerializers $useSerializers) {
+    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, ToDict $toDict, 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, UnmarshalJSON $unmarshalJSON) {
         $this->dummy = $dummy;
         $this->kSerializer = $kSerializer;
         $this->obj5Self = $obj5Self;
@@ -41937,6 +41776,8 @@ 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;
@@ -41993,9 +41834,6 @@ class Obj5 {
         $this->undefined = $undefined;
         $this->union = $union;
         $this->unmarshalJSON = $unmarshalJSON;
-        $this->unowned = $unowned;
-        $this->unsafe = $unsafe;
-        $this->useSerializers = $useSerializers;
     }
 
     /**
@@ -42333,6 +42171,102 @@ 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
@@ -42378,7 +42312,7 @@ class Obj5 {
      * @return Select
      */
     public static function sampleSelect(): Select {
-        return Select::sample(); /*38:select*/
+        return Select::sample(); /*40:select*/
     }
 
     /**
@@ -42426,7 +42360,7 @@ class Obj5 {
      * @return SelfClass
      */
     public static function sampleSelf(): SelfClass {
-        return SelfClass::sample(); /*39:self*/
+        return SelfClass::sample(); /*41:self*/
     }
 
     /**
@@ -42474,7 +42408,7 @@ class Obj5 {
      * @return Sendable
      */
     public static function sampleSendable(): Sendable {
-        return Sendable::sample(); /*40:sendable*/
+        return Sendable::sample(); /*42:sendable*/
     }
 
     /**
@@ -42522,7 +42456,7 @@ class Obj5 {
      * @return SerialDescriptor
      */
     public static function sampleSerialDescriptor(): SerialDescriptor {
-        return SerialDescriptor::sample(); /*41:serialDescriptor*/
+        return SerialDescriptor::sample(); /*43:serialDescriptor*/
     }
 
     /**
@@ -42570,7 +42504,7 @@ class Obj5 {
      * @return SerialName
      */
     public static function sampleSerialName(): SerialName {
-        return SerialName::sample(); /*42:serialName*/
+        return SerialName::sample(); /*44:serialName*/
     }
 
     /**
@@ -42618,7 +42552,7 @@ class Obj5 {
      * @return SerializableClass
      */
     public static function sampleSerializable(): SerializableClass {
-        return SerializableClass::sample(); /*43:serializable*/
+        return SerializableClass::sample(); /*45:serializable*/
     }
 
     /**
@@ -42666,7 +42600,7 @@ class Obj5 {
      * @return Serialize
      */
     public static function sampleSerialize(): Serialize {
-        return Serialize::sample(); /*44:serialize*/
+        return Serialize::sample(); /*46:serialize*/
     }
 
     /**
@@ -42714,7 +42648,7 @@ class Obj5 {
      * @return SerializerProvider
      */
     public static function sampleSerializerProvider(): SerializerProvider {
-        return SerializerProvider::sample(); /*45:serializerProvider*/
+        return SerializerProvider::sample(); /*47:serializerProvider*/
     }
 
     /**
@@ -42762,7 +42696,7 @@ class Obj5 {
      * @return Set
      */
     public static function sampleSet(): Set {
-        return Set::sample(); /*46:set*/
+        return Set::sample(); /*48:set*/
     }
 
     /**
@@ -42810,7 +42744,7 @@ class Obj5 {
      * @return Short
      */
     public static function sampleShort(): Short {
-        return Short::sample(); /*47:short*/
+        return Short::sample(); /*49:short*/
     }
 
     /**
@@ -42858,7 +42792,7 @@ class Obj5 {
      * @return Signed
      */
     public static function sampleSigned(): Signed {
-        return Signed::sample(); /*48:signed*/
+        return Signed::sample(); /*50:signed*/
     }
 
     /**
@@ -42906,7 +42840,7 @@ class Obj5 {
      * @return SimpleModule
      */
     public static function sampleSimpleModule(): SimpleModule {
-        return SimpleModule::sample(); /*49:simpleModule*/
+        return SimpleModule::sample(); /*51:simpleModule*/
     }
 
     /**
@@ -42954,7 +42888,7 @@ class Obj5 {
      * @return Sizeof
      */
     public static function sampleSizeof(): Sizeof {
-        return Sizeof::sample(); /*50:sizeof*/
+        return Sizeof::sample(); /*52:sizeof*/
     }
 
     /**
@@ -43002,7 +42936,7 @@ class Obj5 {
      * @return Stackalloc
      */
     public static function sampleStackalloc(): Stackalloc {
-        return Stackalloc::sample(); /*51:stackalloc*/
+        return Stackalloc::sample(); /*53:stackalloc*/
     }
 
     /**
@@ -43050,7 +42984,7 @@ class Obj5 {
      * @return Standards
      */
     public static function sampleStandards(): Standards {
-        return Standards::sample(); /*52:standards*/
+        return Standards::sample(); /*54:standards*/
     }
 
     /**
@@ -43098,7 +43032,7 @@ class Obj5 {
      * @return StaticClass
      */
     public static function sampleStatic(): StaticClass {
-        return StaticClass::sample(); /*53:static*/
+        return StaticClass::sample(); /*55:static*/
     }
 
     /**
@@ -43146,7 +43080,7 @@ class Obj5 {
      * @return StaticAssert
      */
     public static function sampleStaticAssert(): StaticAssert {
-        return StaticAssert::sample(); /*54:staticAssert*/
+        return StaticAssert::sample(); /*56:staticAssert*/
     }
 
     /**
@@ -43194,7 +43128,7 @@ class Obj5 {
      * @return StaticCast
      */
     public static function sampleStaticCast(): StaticCast {
-        return StaticCast::sample(); /*55:staticCast*/
+        return StaticCast::sample(); /*57:staticCast*/
     }
 
     /**
@@ -43242,7 +43176,7 @@ class Obj5 {
      * @return StdDeserializer
      */
     public static function sampleStdDeserializer(): StdDeserializer {
-        return StdDeserializer::sample(); /*56:stdDeserializer*/
+        return StdDeserializer::sample(); /*58:stdDeserializer*/
     }
 
     /**
@@ -43290,7 +43224,7 @@ class Obj5 {
      * @return StdSerializer
      */
     public static function sampleStdSerializer(): StdSerializer {
-        return StdSerializer::sample(); /*57:stdSerializer*/
+        return StdSerializer::sample(); /*59:stdSerializer*/
     }
 
     /**
@@ -43338,7 +43272,7 @@ class Obj5 {
      * @return Strictfp
      */
     public static function sampleStrictfp(): Strictfp {
-        return Strictfp::sample(); /*58:strictfp*/
+        return Strictfp::sample(); /*60:strictfp*/
     }
 
     /**
@@ -43386,7 +43320,7 @@ class Obj5 {
      * @return StringClass
      */
     public static function sampleString(): StringClass {
-        return StringClass::sample(); /*59:string*/
+        return StringClass::sample(); /*61:string*/
     }
 
     /**
@@ -43434,7 +43368,7 @@ class Obj5 {
      * @return Struct
      */
     public static function sampleStruct(): Struct {
-        return Struct::sample(); /*60:struct*/
+        return Struct::sample(); /*62:struct*/
     }
 
     /**
@@ -43482,7 +43416,7 @@ class Obj5 {
      * @return Subscript
      */
     public static function sampleSubscript(): Subscript {
-        return Subscript::sample(); /*61:subscript*/
+        return Subscript::sample(); /*63:subscript*/
     }
 
     /**
@@ -43530,7 +43464,7 @@ class Obj5 {
      * @return Super
      */
     public static function sampleSuper(): Super {
-        return Super::sample(); /*62:super*/
+        return Super::sample(); /*64:super*/
     }
 
     /**
@@ -43578,7 +43512,7 @@ class Obj5 {
      * @return SwitchClass
      */
     public static function sampleSwitch(): SwitchClass {
-        return SwitchClass::sample(); /*63:switch*/
+        return SwitchClass::sample(); /*65:switch*/
     }
 
     /**
@@ -43626,7 +43560,7 @@ class Obj5 {
      * @return Symbol
      */
     public static function sampleSymbol(): Symbol {
-        return Symbol::sample(); /*64:symbol*/
+        return Symbol::sample(); /*66:symbol*/
     }
 
     /**
@@ -43674,7 +43608,7 @@ class Obj5 {
      * @return Synchronized
      */
     public static function sampleSynchronized(): Synchronized {
-        return Synchronized::sample(); /*65:synchronized*/
+        return Synchronized::sample(); /*67:synchronized*/
     }
 
     /**
@@ -43722,7 +43656,7 @@ class Obj5 {
      * @return System
      */
     public static function sampleSystem(): System {
-        return System::sample(); /*66:system*/
+        return System::sample(); /*68:system*/
     }
 
     /**
@@ -43770,7 +43704,7 @@ class Obj5 {
      * @return Template
      */
     public static function sampleTemplate(): Template {
-        return Template::sample(); /*67:template*/
+        return Template::sample(); /*69:template*/
     }
 
     /**
@@ -43818,7 +43752,7 @@ class Obj5 {
      * @return Then
      */
     public static function sampleThen(): Then {
-        return Then::sample(); /*68:then*/
+        return Then::sample(); /*70:then*/
     }
 
     /**
@@ -43866,7 +43800,7 @@ class Obj5 {
      * @return ThreadLocal
      */
     public static function sampleThreadLocal(): ThreadLocal {
-        return ThreadLocal::sample(); /*69:threadLocal*/
+        return ThreadLocal::sample(); /*71:threadLocal*/
     }
 
     /**
@@ -43914,7 +43848,7 @@ class Obj5 {
      * @return ThrowClass
      */
     public static function sampleThrow(): ThrowClass {
-        return ThrowClass::sample(); /*70:throw*/
+        return ThrowClass::sample(); /*72:throw*/
     }
 
     /**
@@ -43962,7 +43896,7 @@ class Obj5 {
      * @return Throws
      */
     public static function sampleThrows(): Throws {
-        return Throws::sample(); /*71:throws*/
+        return Throws::sample(); /*73:throws*/
     }
 
     /**
@@ -44010,7 +43944,7 @@ class Obj5 {
      * @return TimeOnly
      */
     public static function sampleTimeOnly(): TimeOnly {
-        return TimeOnly::sample(); /*72:timeOnly*/
+        return TimeOnly::sample(); /*74:timeOnly*/
     }
 
     /**
@@ -44058,7 +43992,7 @@ class Obj5 {
      * @return TimeOnlyConverter
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter {
-        return TimeOnlyConverter::sample(); /*73:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*75:timeOnlyConverter*/
     }
 
     /**
@@ -44106,7 +44040,7 @@ class Obj5 {
      * @return TimeZone
      */
     public static function sampleTimeZone(): TimeZone {
-        return TimeZone::sample(); /*74:timeZone*/
+        return TimeZone::sample(); /*76:timeZone*/
     }
 
     /**
@@ -44154,7 +44088,7 @@ class Obj5 {
      * @return ToDict
      */
     public static function sampleToDict(): ToDict {
-        return ToDict::sample(); /*75:toDict*/
+        return ToDict::sample(); /*77:toDict*/
     }
 
     /**
@@ -44202,7 +44136,7 @@ class Obj5 {
      * @return ToJSON
      */
     public static function sampleToJSON(): ToJSON {
-        return ToJSON::sample(); /*76:toJSON*/
+        return ToJSON::sample(); /*78:toJSON*/
     }
 
     /**
@@ -44250,7 +44184,7 @@ class Obj5 {
      * @return ToString
      */
     public static function sampleToString(): ToString {
-        return ToString::sample(); /*77:toString*/
+        return ToString::sample(); /*79:toString*/
     }
 
     /**
@@ -44298,7 +44232,7 @@ class Obj5 {
      * @return TopLevelClass
      */
     public static function sampleTopLevel(): TopLevelClass {
-        return TopLevelClass::sample(); /*78:topLevel*/
+        return TopLevelClass::sample(); /*80:topLevel*/
     }
 
     /**
@@ -44346,7 +44280,7 @@ class Obj5 {
      * @return Transient
      */
     public static function sampleTransient(): Transient {
-        return Transient::sample(); /*79:transient*/
+        return Transient::sample(); /*81:transient*/
     }
 
     /**
@@ -44394,7 +44328,7 @@ class Obj5 {
      * @return TrueClass
      */
     public static function sampleTrue(): TrueClass {
-        return TrueClass::sample(); /*80:true*/
+        return TrueClass::sample(); /*82:true*/
     }
 
     /**
@@ -44442,7 +44376,7 @@ class Obj5 {
      * @return TryClass
      */
     public static function sampleTry(): TryClass {
-        return TryClass::sample(); /*81:try*/
+        return TryClass::sample(); /*83:try*/
     }
 
     /**
@@ -44490,7 +44424,7 @@ class Obj5 {
      * @return Type
      */
     public static function sampleType(): Type {
-        return Type::sample(); /*82:type*/
+        return Type::sample(); /*84:type*/
     }
 
     /**
@@ -44538,7 +44472,7 @@ class Obj5 {
      * @return Typealias
      */
     public static function sampleTypealias(): Typealias {
-        return Typealias::sample(); /*83:typealias*/
+        return Typealias::sample(); /*85:typealias*/
     }
 
     /**
@@ -44586,7 +44520,7 @@ class Obj5 {
      * @return Typedef
      */
     public static function sampleTypedef(): Typedef {
-        return Typedef::sample(); /*84:typedef*/
+        return Typedef::sample(); /*86:typedef*/
     }
 
     /**
@@ -44634,7 +44568,7 @@ class Obj5 {
      * @return Typeid
      */
     public static function sampleTypeid(): Typeid {
-        return Typeid::sample(); /*85:typeid*/
+        return Typeid::sample(); /*87:typeid*/
     }
 
     /**
@@ -44682,7 +44616,7 @@ class Obj5 {
      * @return Typename
      */
     public static function sampleTypename(): Typename {
-        return Typename::sample(); /*86:typename*/
+        return Typename::sample(); /*88:typename*/
     }
 
     /**
@@ -44730,7 +44664,7 @@ class Obj5 {
      * @return Typeof
      */
     public static function sampleTypeof(): Typeof {
-        return Typeof::sample(); /*87:typeof*/
+        return Typeof::sample(); /*89:typeof*/
     }
 
     /**
@@ -44778,7 +44712,7 @@ class Obj5 {
      * @return Uint
      */
     public static function sampleUint(): Uint {
-        return Uint::sample(); /*88:uint*/
+        return Uint::sample(); /*90:uint*/
     }
 
     /**
@@ -44826,7 +44760,7 @@ class Obj5 {
      * @return Ulong
      */
     public static function sampleUlong(): Ulong {
-        return Ulong::sample(); /*89:ulong*/
+        return Ulong::sample(); /*91:ulong*/
     }
 
     /**
@@ -44874,7 +44808,7 @@ class Obj5 {
      * @return Unchecked
      */
     public static function sampleUnchecked(): Unchecked {
-        return Unchecked::sample(); /*90:unchecked*/
+        return Unchecked::sample(); /*92:unchecked*/
     }
 
     /**
@@ -44922,7 +44856,7 @@ class Obj5 {
      * @return Undefined
      */
     public static function sampleUndefined(): Undefined {
-        return Undefined::sample(); /*91:undefined*/
+        return Undefined::sample(); /*93:undefined*/
     }
 
     /**
@@ -44970,7 +44904,7 @@ class Obj5 {
      * @return Union
      */
     public static function sampleUnion(): Union {
-        return Union::sample(); /*92:union*/
+        return Union::sample(); /*94:union*/
     }
 
     /**
@@ -45018,156 +44952,12 @@ class Obj5 {
      * @return UnmarshalJSON
      */
     public static function sampleUnmarshalJSON(): UnmarshalJSON {
-        return UnmarshalJSON::sample(); /*93:unmarshalJSON*/
+        return UnmarshalJSON::sample(); /*95:unmarshalJSON*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return Unowned
-     */
-    public static function fromUnowned(stdClass $value): Unowned {
-        return Unowned::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUnowned(): stdClass {
-        if (Obj5::validateUnowned($this->unowned))  {
-            return $this->unowned->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::unowned');
-    }
-
-    /**
-     * @param Unowned
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUnowned(Unowned $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Unowned
-     */
-    public function getUnowned(): Unowned {
-        if (Obj5::validateUnowned($this->unowned))  {
-            return $this->unowned;
-        }
-        throw new Exception('never get to getUnowned Obj5::unowned');
-    }
-
-    /**
-     * @return Unowned
-     */
-    public static function sampleUnowned(): Unowned {
-        return Unowned::sample(); /*94: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(); /*95:unsafe*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return UseSerializers
-     */
-    public static function fromUseSerializers(stdClass $value): UseSerializers {
-        return UseSerializers::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUseSerializers(): stdClass {
-        if (Obj5::validateUseSerializers($this->useSerializers))  {
-            return $this->useSerializers->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::useSerializers');
-    }
-
-    /**
-     * @param UseSerializers
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUseSerializers(UseSerializers $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return UseSerializers
-     */
-    public function getUseSerializers(): UseSerializers {
-        if (Obj5::validateUseSerializers($this->useSerializers))  {
-            return $this->useSerializers;
-        }
-        throw new Exception('never get to getUseSerializers Obj5::useSerializers');
-    }
-
-    /**
-     * @return UseSerializers
-     */
-    public static function sampleUseSerializers(): UseSerializers {
-        return UseSerializers::sample(); /*96:useSerializers*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
+     * @return bool
      */
     public function validate(): bool {
         return Obj5::validateDummy($this->dummy)
@@ -45177,6 +44967,8 @@ 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)
@@ -45232,10 +45024,7 @@ class Obj5 {
         || Obj5::validateUnchecked($this->unchecked)
         || Obj5::validateUndefined($this->undefined)
         || Obj5::validateUnion($this->union)
-        || Obj5::validateUnmarshalJSON($this->unmarshalJSON)
-        || Obj5::validateUnowned($this->unowned)
-        || Obj5::validateUnsafe($this->unsafe)
-        || Obj5::validateUseSerializers($this->useSerializers);
+        || Obj5::validateUnmarshalJSON($this->unmarshalJSON);
     }
 
     /**
@@ -45251,6 +45040,8 @@ 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();
@@ -45307,9 +45098,6 @@ class Obj5 {
         $out->{'undefined'} = $this->toUndefined();
         $out->{'union'} = $this->toUnion();
         $out->{'UnmarshalJSON'} = $this->toUnmarshalJSON();
-        $out->{'unowned'} = $this->toUnowned();
-        $out->{'unsafe'} = $this->toUnsafe();
-        $out->{'UseSerializers'} = $this->toUseSerializers();
         return $out;
     }
 
@@ -45340,6 +45128,12 @@ 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");
         }
@@ -45508,15 +45302,6 @@ class Obj5 {
         if (!property_exists($obj, 'UnmarshalJSON')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'unowned')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'unsafe')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'UseSerializers')) {
-            throw new Exception("Missing required property");
-        }
         return new Obj5(
          Obj5::fromDummy($obj->{'dummy'})
         ,Obj5::fromKSerializer($obj->{'KSerializer'})
@@ -45525,6 +45310,8 @@ 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'})
@@ -45581,9 +45368,6 @@ class Obj5 {
         ,Obj5::fromUndefined($obj->{'undefined'})
         ,Obj5::fromUnion($obj->{'union'})
         ,Obj5::fromUnmarshalJSON($obj->{'UnmarshalJSON'})
-        ,Obj5::fromUnowned($obj->{'unowned'})
-        ,Obj5::fromUnsafe($obj->{'unsafe'})
-        ,Obj5::fromUseSerializers($obj->{'UseSerializers'})
         );
     }
 
@@ -45599,6 +45383,8 @@ class Obj5 {
         ,Obj5::sampleObj5True()
         ,Obj5::sampleObj5Type()
         ,Obj5::samplePrimitiveKind()
+        ,Obj5::sampleSealed()
+        ,Obj5::sampleSel()
         ,Obj5::sampleSelect()
         ,Obj5::sampleSelf()
         ,Obj5::sampleSendable()
@@ -45655,9 +45441,6 @@ class Obj5 {
         ,Obj5::sampleUndefined()
         ,Obj5::sampleUnion()
         ,Obj5::sampleUnmarshalJSON()
-        ,Obj5::sampleUnowned()
-        ,Obj5::sampleUnsafe()
-        ,Obj5::sampleUseSerializers()
         );
     }
 }
@@ -46268,16 +46051,16 @@ class PrimitiveKind {
     }
 }
 
-// This is an autogenerated file:Select
+// This is an autogenerated file:Sealed
 
-class Select {
-    private int $select; // json:select Required
+class Sealed {
+    private int $sealed; // json:sealed Required
 
     /**
-     * @param int $select
+     * @param int $sealed
      */
-    public function __construct(int $select) {
-        $this->select = $select;
+    public function __construct(int $sealed) {
+        $this->sealed = $sealed;
     }
 
     /**
@@ -46285,7 +46068,7 @@ class Select {
      * @throws Exception
      * @return int
      */
-    public static function fromSelect(int $value): int {
+    public static function fromSealed(int $value): int {
         return $value; /*int*/
     }
 
@@ -46293,11 +46076,11 @@ class Select {
      * @throws Exception
      * @return int
      */
-    public function toSelect(): int {
-        if (Select::validateSelect($this->select))  {
-            return $this->select; /*int*/
+    public function toSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed; /*int*/
         }
-        throw new Exception('never get to this Select::select');
+        throw new Exception('never get to this Sealed::sealed');
     }
 
     /**
@@ -46305,7 +46088,7 @@ class Select {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelect(int $value): bool {
+    public static function validateSealed(int $value): bool {
         return true;
     }
 
@@ -46313,18 +46096,18 @@ class Select {
      * @throws Exception
      * @return int
      */
-    public function getSelect(): int {
-        if (Select::validateSelect($this->select))  {
-            return $this->select;
+    public function getSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed;
         }
-        throw new Exception('never get to getSelect Select::select');
+        throw new Exception('never get to getSealed Sealed::sealed');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelect(): int {
-        return 31; /*31:select*/
+    public static function sampleSealed(): int {
+        return 31; /*31:sealed*/
     }
 
     /**
@@ -46332,7 +46115,7 @@ class Select {
      * @return bool
      */
     public function validate(): bool {
-        return Select::validateSelect($this->select);
+        return Sealed::validateSealed($this->sealed);
     }
 
     /**
@@ -46341,44 +46124,44 @@ class Select {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'select'} = $this->toSelect();
+        $out->{'sealed'} = $this->toSealed();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Select
+     * @return Sealed
      * @throws Exception
      */
-    public static function from(stdClass $obj): Select {
-        if (!property_exists($obj, 'select')) {
+    public static function from(stdClass $obj): Sealed {
+        if (!property_exists($obj, 'sealed')) {
             throw new Exception("Missing required property");
         }
-        return new Select(
-         Select::fromSelect($obj->{'select'})
+        return new Sealed(
+         Sealed::fromSealed($obj->{'sealed'})
         );
     }
 
     /**
-     * @return Select
+     * @return Sealed
      */
-    public static function sample(): Select {
-        return new Select(
-         Select::sampleSelect()
+    public static function sample(): Sealed {
+        return new Sealed(
+         Sealed::sampleSealed()
         );
     }
 }
 
-// This is an autogenerated file:SelfClass
+// This is an autogenerated file:Sel
 
-class SelfClass {
-    private int $self; // json:Self Required
+class Sel {
+    private int $sel; // json:SEL Required
 
     /**
-     * @param int $self
+     * @param int $sel
      */
-    public function __construct(int $self) {
-        $this->self = $self;
+    public function __construct(int $sel) {
+        $this->sel = $sel;
     }
 
     /**
@@ -46386,7 +46169,7 @@ class SelfClass {
      * @throws Exception
      * @return int
      */
-    public static function fromSelf(int $value): int {
+    public static function fromSel(int $value): int {
         return $value; /*int*/
     }
 
@@ -46394,11 +46177,11 @@ class SelfClass {
      * @throws Exception
      * @return int
      */
-    public function toSelf(): int {
-        if (SelfClass::validateSelf($this->self))  {
-            return $this->self; /*int*/
+    public function toSel(): int {
+        if (Sel::validateSel($this->sel))  {
+            return $this->sel; /*int*/
         }
-        throw new Exception('never get to this SelfClass::self');
+        throw new Exception('never get to this Sel::sel');
     }
 
     /**
@@ -46406,7 +46189,7 @@ class SelfClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelf(int $value): bool {
+    public static function validateSel(int $value): bool {
         return true;
     }
 
@@ -46414,18 +46197,18 @@ class SelfClass {
      * @throws Exception
      * @return int
      */
-    public function getSelf(): int {
-        if (SelfClass::validateSelf($this->self))  {
-            return $this->self;
+    public function getSel(): int {
+        if (Sel::validateSel($this->sel))  {
+            return $this->sel;
         }
-        throw new Exception('never get to getSelf SelfClass::self');
+        throw new Exception('never get to getSel Sel::sel');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelf(): int {
-        return 31; /*31:self*/
+    public static function sampleSel(): int {
+        return 31; /*31:sel*/
     }
 
     /**
@@ -46433,7 +46216,7 @@ class SelfClass {
      * @return bool
      */
     public function validate(): bool {
-        return SelfClass::validateSelf($this->self);
+        return Sel::validateSel($this->sel);
     }
 
     /**
@@ -46442,26 +46225,228 @@ class SelfClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Self'} = $this->toSelf();
+        $out->{'SEL'} = $this->toSel();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SelfClass
+     * @return Sel
      * @throws Exception
      */
-    public static function from(stdClass $obj): SelfClass {
-        if (!property_exists($obj, 'Self')) {
+    public static function from(stdClass $obj): Sel {
+        if (!property_exists($obj, 'SEL')) {
             throw new Exception("Missing required property");
         }
-        return new SelfClass(
-         SelfClass::fromSelf($obj->{'Self'})
+        return new Sel(
+         Sel::fromSel($obj->{'SEL'})
         );
     }
 
     /**
-     * @return SelfClass
+     * @return Sel
+     */
+    public static function sample(): Sel {
+        return new Sel(
+         Sel::sampleSel()
+        );
+    }
+}
+
+// This is an autogenerated file:Select
+
+class Select {
+    private int $select; // json:select Required
+
+    /**
+     * @param int $select
+     */
+    public function __construct(int $select) {
+        $this->select = $select;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSelect(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select; /*int*/
+        }
+        throw new Exception('never get to this Select::select');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelect(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select;
+        }
+        throw new Exception('never get to getSelect Select::select');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelect(): int {
+        return 31; /*31:select*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Select::validateSelect($this->select);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'select'} = $this->toSelect();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Select
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Select {
+        if (!property_exists($obj, 'select')) {
+            throw new Exception("Missing required property");
+        }
+        return new Select(
+         Select::fromSelect($obj->{'select'})
+        );
+    }
+
+    /**
+     * @return Select
+     */
+    public static function sample(): Select {
+        return new Select(
+         Select::sampleSelect()
+        );
+    }
+}
+
+// This is an autogenerated file:SelfClass
+
+class SelfClass {
+    private int $self; // json:Self Required
+
+    /**
+     * @param int $self
+     */
+    public function __construct(int $self) {
+        $this->self = $self;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSelf(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSelf(): int {
+        if (SelfClass::validateSelf($this->self))  {
+            return $this->self; /*int*/
+        }
+        throw new Exception('never get to this SelfClass::self');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelf(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSelf(): int {
+        if (SelfClass::validateSelf($this->self))  {
+            return $this->self;
+        }
+        throw new Exception('never get to getSelf SelfClass::self');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelf(): int {
+        return 31; /*31:self*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return SelfClass::validateSelf($this->self);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Self'} = $this->toSelf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SelfClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SelfClass {
+        if (!property_exists($obj, 'Self')) {
+            throw new Exception("Missing required property");
+        }
+        return new SelfClass(
+         SelfClass::fromSelf($obj->{'Self'})
+        );
+    }
+
+    /**
+     * @return SelfClass
      */
     public static function sample(): SelfClass {
         return new SelfClass(
@@ -51924,36 +51909,105 @@ class UnmarshalJSON {
     }
 }
 
-// This is an autogenerated file:Unowned
-
-class Unowned {
-    private int $unowned; // json:unowned Required
-
-    /**
-     * @param int $unowned
-     */
-    public function __construct(int $unowned) {
-        $this->unowned = $unowned;
-    }
+// This is an autogenerated file:Obj6
 
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromUnowned(int $value): int {
-        return $value; /*int*/
-    }
+class Obj6 {
+    private int $dummy; // json:dummy Required
+    private Unowned $unowned; // json:unowned Required
+    private Unsafe $unsafe; // json:unsafe Required
+    private Unsigned $unsigned; // json:unsigned Required
+    private UseSerializers $useSerializers; // json:UseSerializers Required
+    private Ushort $ushort; // json:ushort Required
+    private Using $using; // json:using Required
+    private Utf8JSONReader $utf8JSONReader; // json:Utf8JsonReader Required
+    private Utf8JSONWriter $utf8JSONWriter; // json:Utf8JsonWriter Required
+    private UUID $uuid; // json:UUID Required
+    private VarClass $var; // json:var Required
+    private Virtual $virtual; // json:virtual Required
+    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
 
     /**
-     * @throws Exception
-     * @return int
-     */
-    public function toUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned; /*int*/
-        }
-        throw new Exception('never get to this Unowned::unowned');
+     * @param int $dummy
+     * @param Unowned $unowned
+     * @param Unsafe $unsafe
+     * @param Unsigned $unsigned
+     * @param UseSerializers $useSerializers
+     * @param Ushort $ushort
+     * @param Using $using
+     * @param Utf8JSONReader $utf8JSONReader
+     * @param Utf8JSONWriter $utf8JSONWriter
+     * @param UUID $uuid
+     * @param VarClass $var
+     * @param Virtual $virtual
+     * @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 $dummy, Unowned $unowned, Unsafe $unsafe, Unsigned $unsigned, UseSerializers $useSerializers, Ushort $ushort, Using $using, Utf8JSONReader $utf8JSONReader, Utf8JSONWriter $utf8JSONWriter, UUID $uuid, VarClass $var, Virtual $virtual, VoidClass $void, Volatile $volatile, WcharT $wcharT, Weak $weak, Where $where, WhileClass $while, WillSet $willSet, With $with, XorClass $xor, XorEq $xorEq, Yes $yes, YieldClass $yield) {
+        $this->dummy = $dummy;
+        $this->unowned = $unowned;
+        $this->unsafe = $unsafe;
+        $this->unsigned = $unsigned;
+        $this->useSerializers = $useSerializers;
+        $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;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDummy(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDummy(): int {
+        if (Obj6::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this Obj6::dummy');
     }
 
     /**
@@ -51961,7 +52015,7 @@ class Unowned {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnowned(int $value): bool {
+    public static function validateDummy(int $value): bool {
         return true;
     }
 
@@ -51969,435 +52023,216 @@ 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 Unowned
      */
-    public function validate(): bool {
-        return Unowned::validateUnowned($this->unowned);
+    public static function fromUnowned(stdClass $value): Unowned {
+        return Unowned::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unowned'} = $this->toUnowned();
-        return $out;
+    public function toUnowned(): stdClass {
+        if (Obj6::validateUnowned($this->unowned))  {
+            return $this->unowned->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::unowned');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unowned
+     * @param Unowned
+     * @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 validateUnowned(Unowned $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
+     * @throws Exception
      * @return Unowned
      */
-    public static function sample(): Unowned {
-        return new Unowned(
-         Unowned::sampleUnowned()
-        );
+    public function getUnowned(): Unowned {
+        if (Obj6::validateUnowned($this->unowned))  {
+            return $this->unowned;
+        }
+        throw new Exception('never get to getUnowned Obj6::unowned');
     }
-}
-
-// This is an autogenerated file:Unsafe
-
-class Unsafe {
-    private int $unsafe; // json:unsafe Required
 
     /**
-     * @param int $unsafe
+     * @return Unowned
      */
-    public function __construct(int $unsafe) {
-        $this->unsafe = $unsafe;
+    public static function sampleUnowned(): Unowned {
+        return Unowned::sample(); /*32:unowned*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Unsafe
      */
-    public static function fromUnsafe(int $value): int {
-        return $value; /*int*/
+    public static function fromUnsafe(stdClass $value): Unsafe {
+        return Unsafe::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe; /*int*/
+    public function toUnsafe(): stdClass {
+        if (Obj6::validateUnsafe($this->unsafe))  {
+            return $this->unsafe->to(); /*class*/
         }
-        throw new Exception('never get to this Unsafe::unsafe');
+        throw new Exception('never get to this Obj6::unsafe');
     }
 
     /**
-     * @param int
+     * @param Unsafe
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsafe(int $value): bool {
+    public static function validateUnsafe(Unsafe $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Unsafe
      */
-    public function getUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
+    public function getUnsafe(): Unsafe {
+        if (Obj6::validateUnsafe($this->unsafe))  {
             return $this->unsafe;
         }
-        throw new Exception('never get to getUnsafe Unsafe::unsafe');
+        throw new Exception('never get to getUnsafe Obj6::unsafe');
     }
 
     /**
-     * @return int
+     * @return Unsafe
      */
-    public static function sampleUnsafe(): int {
-        return 31; /*31:unsafe*/
+    public static function sampleUnsafe(): Unsafe {
+        return Unsafe::sample(); /*33:unsafe*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Unsigned
      */
-    public function validate(): bool {
-        return Unsafe::validateUnsafe($this->unsafe);
+    public static function fromUnsigned(stdClass $value): Unsigned {
+        return Unsigned::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unsafe'} = $this->toUnsafe();
-        return $out;
+    public function toUnsigned(): stdClass {
+        if (Obj6::validateUnsigned($this->unsigned))  {
+            return $this->unsigned->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::unsigned');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unsafe
+     * @param Unsigned
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unsafe {
-        if (!property_exists($obj, 'unsafe')) {
-            throw new Exception("Missing required property");
-        }
-        return new Unsafe(
-         Unsafe::fromUnsafe($obj->{'unsafe'})
-        );
+    public static function validateUnsigned(Unsigned $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unsafe
+     * @throws Exception
+     * @return Unsigned
      */
-    public static function sample(): Unsafe {
-        return new Unsafe(
-         Unsafe::sampleUnsafe()
-        );
+    public function getUnsigned(): Unsigned {
+        if (Obj6::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
+        }
+        throw new Exception('never get to getUnsigned Obj6::unsigned');
     }
-}
-
-// This is an autogenerated file:UseSerializers
-
-class UseSerializers {
-    private int $useSerializers; // json:UseSerializers Required
 
     /**
-     * @param int $useSerializers
+     * @return Unsigned
      */
-    public function __construct(int $useSerializers) {
-        $this->useSerializers = $useSerializers;
+    public static function sampleUnsigned(): Unsigned {
+        return Unsigned::sample(); /*34:unsigned*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return UseSerializers
      */
-    public static function fromUseSerializers(int $value): int {
-        return $value; /*int*/
+    public static function fromUseSerializers(stdClass $value): UseSerializers {
+        return UseSerializers::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUseSerializers(): int {
-        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
-            return $this->useSerializers; /*int*/
+    public function toUseSerializers(): stdClass {
+        if (Obj6::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers->to(); /*class*/
         }
-        throw new Exception('never get to this UseSerializers::useSerializers');
+        throw new Exception('never get to this Obj6::useSerializers');
     }
 
     /**
-     * @param int
+     * @param UseSerializers
      * @return bool
      * @throws Exception
      */
-    public static function validateUseSerializers(int $value): bool {
+    public static function validateUseSerializers(UseSerializers $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return UseSerializers
      */
-    public function getUseSerializers(): int {
-        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+    public function getUseSerializers(): UseSerializers {
+        if (Obj6::validateUseSerializers($this->useSerializers))  {
             return $this->useSerializers;
         }
-        throw new Exception('never get to getUseSerializers UseSerializers::useSerializers');
+        throw new Exception('never get to getUseSerializers Obj6::useSerializers');
     }
 
     /**
-     * @return int
+     * @return UseSerializers
      */
-    public static function sampleUseSerializers(): int {
-        return 31; /*31:useSerializers*/
+    public static function sampleUseSerializers(): UseSerializers {
+        return UseSerializers::sample(); /*35:useSerializers*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return UseSerializers::validateUseSerializers($this->useSerializers);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'UseSerializers'} = $this->toUseSerializers();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return UseSerializers
-     * @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'})
-        );
-    }
-
-    /**
-     * @return UseSerializers
-     */
-    public static function sample(): UseSerializers {
-        return new UseSerializers(
-         UseSerializers::sampleUseSerializers()
-        );
-    }
-}
-
-// This is an autogenerated file:Obj6
-
-class Obj6 {
-    private int $dummy; // json:dummy 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 $dummy
-     * @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 $dummy, 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->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;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromDummy(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toDummy(): int {
-        if (Obj6::validateDummy($this->dummy))  {
-            return $this->dummy; /*int*/
-        }
-        throw new Exception('never get to this Obj6::dummy');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateDummy(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getDummy(): int {
-        if (Obj6::validateDummy($this->dummy))  {
-            return $this->dummy;
-        }
-        throw new Exception('never get to getDummy Obj6::dummy');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleDummy(): int {
-        return 31; /*31:dummy*/
-    }
-
-    /**
-     * @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 (Obj6::validateUnsigned($this->unsigned))  {
-            return $this->unsigned->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::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 (Obj6::validateUnsigned($this->unsigned))  {
-            return $this->unsigned;
-        }
-        throw new Exception('never get to getUnsigned Obj6::unsigned');
-    }
-
-    /**
-     * @return Unsigned
-     */
-    public static function sampleUnsigned(): Unsigned {
-        return Unsigned::sample(); /*32:unsigned*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Ushort
+     * @return Ushort
      */
     public static function fromUshort(stdClass $value): Ushort {
         return Ushort::from($value); /*class*/
@@ -52439,7 +52274,7 @@ class Obj6 {
      * @return Ushort
      */
     public static function sampleUshort(): Ushort {
-        return Ushort::sample(); /*33:ushort*/
+        return Ushort::sample(); /*36:ushort*/
     }
 
     /**
@@ -52487,7 +52322,7 @@ class Obj6 {
      * @return Using
      */
     public static function sampleUsing(): Using {
-        return Using::sample(); /*34:using*/
+        return Using::sample(); /*37:using*/
     }
 
     /**
@@ -52535,7 +52370,7 @@ class Obj6 {
      * @return Utf8JSONReader
      */
     public static function sampleUtf8JSONReader(): Utf8JSONReader {
-        return Utf8JSONReader::sample(); /*35:utf8JSONReader*/
+        return Utf8JSONReader::sample(); /*38:utf8JSONReader*/
     }
 
     /**
@@ -52583,7 +52418,7 @@ class Obj6 {
      * @return Utf8JSONWriter
      */
     public static function sampleUtf8JSONWriter(): Utf8JSONWriter {
-        return Utf8JSONWriter::sample(); /*36:utf8JSONWriter*/
+        return Utf8JSONWriter::sample(); /*39:utf8JSONWriter*/
     }
 
     /**
@@ -52631,7 +52466,7 @@ class Obj6 {
      * @return UUID
      */
     public static function sampleUUID(): UUID {
-        return UUID::sample(); /*37:uuid*/
+        return UUID::sample(); /*40:uuid*/
     }
 
     /**
@@ -52679,7 +52514,7 @@ class Obj6 {
      * @return VarClass
      */
     public static function sampleVar(): VarClass {
-        return VarClass::sample(); /*38:var*/
+        return VarClass::sample(); /*41:var*/
     }
 
     /**
@@ -52727,7 +52562,7 @@ class Obj6 {
      * @return Virtual
      */
     public static function sampleVirtual(): Virtual {
-        return Virtual::sample(); /*39:virtual*/
+        return Virtual::sample(); /*42:virtual*/
     }
 
     /**
@@ -52775,7 +52610,7 @@ class Obj6 {
      * @return VoidClass
      */
     public static function sampleVoid(): VoidClass {
-        return VoidClass::sample(); /*40:void*/
+        return VoidClass::sample(); /*43:void*/
     }
 
     /**
@@ -52823,7 +52658,7 @@ class Obj6 {
      * @return Volatile
      */
     public static function sampleVolatile(): Volatile {
-        return Volatile::sample(); /*41:volatile*/
+        return Volatile::sample(); /*44:volatile*/
     }
 
     /**
@@ -52871,7 +52706,7 @@ class Obj6 {
      * @return WcharT
      */
     public static function sampleWcharT(): WcharT {
-        return WcharT::sample(); /*42:wcharT*/
+        return WcharT::sample(); /*45:wcharT*/
     }
 
     /**
@@ -52919,7 +52754,7 @@ class Obj6 {
      * @return Weak
      */
     public static function sampleWeak(): Weak {
-        return Weak::sample(); /*43:weak*/
+        return Weak::sample(); /*46:weak*/
     }
 
     /**
@@ -52967,7 +52802,7 @@ class Obj6 {
      * @return Where
      */
     public static function sampleWhere(): Where {
-        return Where::sample(); /*44:where*/
+        return Where::sample(); /*47:where*/
     }
 
     /**
@@ -53015,7 +52850,7 @@ class Obj6 {
      * @return WhileClass
      */
     public static function sampleWhile(): WhileClass {
-        return WhileClass::sample(); /*45:while*/
+        return WhileClass::sample(); /*48:while*/
     }
 
     /**
@@ -53063,7 +52898,7 @@ class Obj6 {
      * @return WillSet
      */
     public static function sampleWillSet(): WillSet {
-        return WillSet::sample(); /*46:willSet*/
+        return WillSet::sample(); /*49:willSet*/
     }
 
     /**
@@ -53111,7 +52946,7 @@ class Obj6 {
      * @return With
      */
     public static function sampleWith(): With {
-        return With::sample(); /*47:with*/
+        return With::sample(); /*50:with*/
     }
 
     /**
@@ -53159,7 +52994,7 @@ class Obj6 {
      * @return XorClass
      */
     public static function sampleXor(): XorClass {
-        return XorClass::sample(); /*48:xor*/
+        return XorClass::sample(); /*51:xor*/
     }
 
     /**
@@ -53207,7 +53042,7 @@ class Obj6 {
      * @return XorEq
      */
     public static function sampleXorEq(): XorEq {
-        return XorEq::sample(); /*49:xorEq*/
+        return XorEq::sample(); /*52:xorEq*/
     }
 
     /**
@@ -53255,55 +53090,519 @@ class Obj6 {
      * @return Yes
      */
     public static function sampleYes(): Yes {
-        return Yes::sample(); /*50:yes*/
+        return Yes::sample(); /*53:yes*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return YieldClass
+     */
+    public static function fromYield(stdClass $value): YieldClass {
+        return YieldClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toYield(): stdClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::yield');
+    }
+
+    /**
+     * @param YieldClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateYield(YieldClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return YieldClass
+     */
+    public function getYield(): YieldClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield;
+        }
+        throw new Exception('never get to getYield Obj6::yield');
+    }
+
+    /**
+     * @return YieldClass
+     */
+    public static function sampleYield(): YieldClass {
+        return YieldClass::sample(); /*54:yield*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj6::validateDummy($this->dummy)
+        || Obj6::validateUnowned($this->unowned)
+        || Obj6::validateUnsafe($this->unsafe)
+        || Obj6::validateUnsigned($this->unsigned)
+        || Obj6::validateUseSerializers($this->useSerializers)
+        || 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);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'unowned'} = $this->toUnowned();
+        $out->{'unsafe'} = $this->toUnsafe();
+        $out->{'unsigned'} = $this->toUnsigned();
+        $out->{'UseSerializers'} = $this->toUseSerializers();
+        $out->{'ushort'} = $this->toUshort();
+        $out->{'using'} = $this->toUsing();
+        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
+        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
+        $out->{'UUID'} = $this->toUUID();
+        $out->{'var'} = $this->toVar();
+        $out->{'virtual'} = $this->toVirtual();
+        $out->{'void'} = $this->toVoid();
+        $out->{'volatile'} = $this->toVolatile();
+        $out->{'wchar_t'} = $this->toWcharT();
+        $out->{'weak'} = $this->toWeak();
+        $out->{'where'} = $this->toWhere();
+        $out->{'while'} = $this->toWhile();
+        $out->{'willSet'} = $this->toWillSet();
+        $out->{'with'} = $this->toWith();
+        $out->{'xor'} = $this->toXor();
+        $out->{'xor_eq'} = $this->toXorEq();
+        $out->{'YES'} = $this->toYes();
+        $out->{'yield'} = $this->toYield();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj6
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj6 {
+        if (!property_exists($obj, 'dummy')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, '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");
+        }
+        if (!property_exists($obj, 'using')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'Utf8JsonReader')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'Utf8JsonWriter')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'UUID')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'var')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'virtual')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'void')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'volatile')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'wchar_t')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'weak')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'where')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'while')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'willSet')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'with')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'xor')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'xor_eq')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'YES')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'yield')) {
+            throw new Exception("Missing required property");
+        }
+        return new Obj6(
+         Obj6::fromDummy($obj->{'dummy'})
+        ,Obj6::fromUnowned($obj->{'unowned'})
+        ,Obj6::fromUnsafe($obj->{'unsafe'})
+        ,Obj6::fromUnsigned($obj->{'unsigned'})
+        ,Obj6::fromUseSerializers($obj->{'UseSerializers'})
+        ,Obj6::fromUshort($obj->{'ushort'})
+        ,Obj6::fromUsing($obj->{'using'})
+        ,Obj6::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
+        ,Obj6::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
+        ,Obj6::fromUUID($obj->{'UUID'})
+        ,Obj6::fromVar($obj->{'var'})
+        ,Obj6::fromVirtual($obj->{'virtual'})
+        ,Obj6::fromVoid($obj->{'void'})
+        ,Obj6::fromVolatile($obj->{'volatile'})
+        ,Obj6::fromWcharT($obj->{'wchar_t'})
+        ,Obj6::fromWeak($obj->{'weak'})
+        ,Obj6::fromWhere($obj->{'where'})
+        ,Obj6::fromWhile($obj->{'while'})
+        ,Obj6::fromWillSet($obj->{'willSet'})
+        ,Obj6::fromWith($obj->{'with'})
+        ,Obj6::fromXor($obj->{'xor'})
+        ,Obj6::fromXorEq($obj->{'xor_eq'})
+        ,Obj6::fromYes($obj->{'YES'})
+        ,Obj6::fromYield($obj->{'yield'})
+        );
+    }
+
+    /**
+     * @return Obj6
+     */
+    public static function sample(): Obj6 {
+        return new Obj6(
+         Obj6::sampleDummy()
+        ,Obj6::sampleUnowned()
+        ,Obj6::sampleUnsafe()
+        ,Obj6::sampleUnsigned()
+        ,Obj6::sampleUseSerializers()
+        ,Obj6::sampleUshort()
+        ,Obj6::sampleUsing()
+        ,Obj6::sampleUtf8JSONReader()
+        ,Obj6::sampleUtf8JSONWriter()
+        ,Obj6::sampleUUID()
+        ,Obj6::sampleVar()
+        ,Obj6::sampleVirtual()
+        ,Obj6::sampleVoid()
+        ,Obj6::sampleVolatile()
+        ,Obj6::sampleWcharT()
+        ,Obj6::sampleWeak()
+        ,Obj6::sampleWhere()
+        ,Obj6::sampleWhile()
+        ,Obj6::sampleWillSet()
+        ,Obj6::sampleWith()
+        ,Obj6::sampleXor()
+        ,Obj6::sampleXorEq()
+        ,Obj6::sampleYes()
+        ,Obj6::sampleYield()
+        );
+    }
+}
+
+// This is an autogenerated file:Unowned
+
+class Unowned {
+    private int $unowned; // json:unowned Required
+
+    /**
+     * @param int $unowned
+     */
+    public function __construct(int $unowned) {
+        $this->unowned = $unowned;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUnowned(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned; /*int*/
+        }
+        throw new Exception('never get to this Unowned::unowned');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnowned(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned;
+        }
+        throw new Exception('never get to getUnowned Unowned::unowned');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUnowned(): int {
+        return 31; /*31:unowned*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Unowned::validateUnowned($this->unowned);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'unowned'} = $this->toUnowned();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Unowned
+     * @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'})
+        );
+    }
+
+    /**
+     * @return Unowned
+     */
+    public static function sample(): Unowned {
+        return new Unowned(
+         Unowned::sampleUnowned()
+        );
+    }
+}
+
+// This is an autogenerated file:Unsafe
+
+class Unsafe {
+    private int $unsafe; // json:unsafe Required
+
+    /**
+     * @param int $unsafe
+     */
+    public function __construct(int $unsafe) {
+        $this->unsafe = $unsafe;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUnsafe(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe; /*int*/
+        }
+        throw new Exception('never get to this Unsafe::unsafe');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnsafe(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe;
+        }
+        throw new Exception('never get to getUnsafe Unsafe::unsafe');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUnsafe(): int {
+        return 31; /*31:unsafe*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Unsafe::validateUnsafe($this->unsafe);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'unsafe'} = $this->toUnsafe();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Unsafe
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Unsafe {
+        if (!property_exists($obj, 'unsafe')) {
+            throw new Exception("Missing required property");
+        }
+        return new Unsafe(
+         Unsafe::fromUnsafe($obj->{'unsafe'})
+        );
+    }
+
+    /**
+     * @return Unsafe
+     */
+    public static function sample(): Unsafe {
+        return new Unsafe(
+         Unsafe::sampleUnsafe()
+        );
+    }
+}
+
+// This is an autogenerated file:Unsigned
+
+class Unsigned {
+    private int $unsigned; // json:unsigned Required
+
+    /**
+     * @param int $unsigned
+     */
+    public function __construct(int $unsigned) {
+        $this->unsigned = $unsigned;
     }
 
     /**
-     * @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 fromUnsigned(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 toUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned; /*int*/
         }
-        throw new Exception('never get to this Obj6::yield');
+        throw new Exception('never get to this Unsigned::unsigned');
     }
 
     /**
-     * @param YieldClass
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateYield(YieldClass $value): bool {
-        $value->validate();
+    public static function validateUnsigned(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 getUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
         }
-        throw new Exception('never get to getYield Obj6::yield');
+        throw new Exception('never get to getUnsigned Unsigned::unsigned');
     }
 
     /**
-     * @return YieldClass
+     * @return int
      */
-    public static function sampleYield(): YieldClass {
-        return YieldClass::sample(); /*51:yield*/
+    public static function sampleUnsigned(): int {
+        return 31; /*31:unsigned*/
     }
 
     /**
@@ -53311,27 +53610,7 @@ class Obj6 {
      * @return bool
      */
     public function validate(): bool {
-        return Obj6::validateDummy($this->dummy)
-        || 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);
+        return Unsigned::validateUnsigned($this->unsigned);
     }
 
     /**
@@ -53340,164 +53619,44 @@ class Obj6 {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'dummy'} = $this->toDummy();
         $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
+     * @return Unsigned
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj6 {
-        if (!property_exists($obj, 'dummy')) {
-            throw new Exception("Missing required property");
-        }
+    public static function from(stdClass $obj): Unsigned {
         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");
-        }
-        if (!property_exists($obj, 'YES')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'yield')) {
-            throw new Exception("Missing required property");
-        }
-        return new Obj6(
-         Obj6::fromDummy($obj->{'dummy'})
-        ,Obj6::fromUnsigned($obj->{'unsigned'})
-        ,Obj6::fromUshort($obj->{'ushort'})
-        ,Obj6::fromUsing($obj->{'using'})
-        ,Obj6::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
-        ,Obj6::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
-        ,Obj6::fromUUID($obj->{'UUID'})
-        ,Obj6::fromVar($obj->{'var'})
-        ,Obj6::fromVirtual($obj->{'virtual'})
-        ,Obj6::fromVoid($obj->{'void'})
-        ,Obj6::fromVolatile($obj->{'volatile'})
-        ,Obj6::fromWcharT($obj->{'wchar_t'})
-        ,Obj6::fromWeak($obj->{'weak'})
-        ,Obj6::fromWhere($obj->{'where'})
-        ,Obj6::fromWhile($obj->{'while'})
-        ,Obj6::fromWillSet($obj->{'willSet'})
-        ,Obj6::fromWith($obj->{'with'})
-        ,Obj6::fromXor($obj->{'xor'})
-        ,Obj6::fromXorEq($obj->{'xor_eq'})
-        ,Obj6::fromYes($obj->{'YES'})
-        ,Obj6::fromYield($obj->{'yield'})
+        return new Unsigned(
+         Unsigned::fromUnsigned($obj->{'unsigned'})
         );
     }
 
     /**
-     * @return Obj6
+     * @return Unsigned
      */
-    public static function sample(): Obj6 {
-        return new Obj6(
-         Obj6::sampleDummy()
-        ,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()
+    public static function sample(): Unsigned {
+        return new Unsigned(
+         Unsigned::sampleUnsigned()
         );
     }
 }
 
-// This is an autogenerated file:Unsigned
+// This is an autogenerated file:UseSerializers
 
-class Unsigned {
-    private int $unsigned; // json:unsigned Required
+class UseSerializers {
+    private int $useSerializers; // json:UseSerializers Required
 
     /**
-     * @param int $unsigned
+     * @param int $useSerializers
      */
-    public function __construct(int $unsigned) {
-        $this->unsigned = $unsigned;
+    public function __construct(int $useSerializers) {
+        $this->useSerializers = $useSerializers;
     }
 
     /**
@@ -53505,7 +53664,7 @@ class Unsigned {
      * @throws Exception
      * @return int
      */
-    public static function fromUnsigned(int $value): int {
+    public static function fromUseSerializers(int $value): int {
         return $value; /*int*/
     }
 
@@ -53513,11 +53672,11 @@ class Unsigned {
      * @throws Exception
      * @return int
      */
-    public function toUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned; /*int*/
+    public function toUseSerializers(): int {
+        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers; /*int*/
         }
-        throw new Exception('never get to this Unsigned::unsigned');
+        throw new Exception('never get to this UseSerializers::useSerializers');
     }
 
     /**
@@ -53525,7 +53684,7 @@ class Unsigned {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsigned(int $value): bool {
+    public static function validateUseSerializers(int $value): bool {
         return true;
     }
 
@@ -53533,18 +53692,18 @@ class Unsigned {
      * @throws Exception
      * @return int
      */
-    public function getUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned;
+    public function getUseSerializers(): int {
+        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers;
         }
-        throw new Exception('never get to getUnsigned Unsigned::unsigned');
+        throw new Exception('never get to getUseSerializers UseSerializers::useSerializers');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnsigned(): int {
-        return 31; /*31:unsigned*/
+    public static function sampleUseSerializers(): int {
+        return 31; /*31:useSerializers*/
     }
 
     /**
@@ -53552,7 +53711,7 @@ class Unsigned {
      * @return bool
      */
     public function validate(): bool {
-        return Unsigned::validateUnsigned($this->unsigned);
+        return UseSerializers::validateUseSerializers($this->useSerializers);
     }
 
     /**
@@ -53561,30 +53720,30 @@ class Unsigned {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'unsigned'} = $this->toUnsigned();
+        $out->{'UseSerializers'} = $this->toUseSerializers();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Unsigned
+     * @return UseSerializers
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unsigned {
-        if (!property_exists($obj, 'unsigned')) {
+    public static function from(stdClass $obj): UseSerializers {
+        if (!property_exists($obj, 'UseSerializers')) {
             throw new Exception("Missing required property");
         }
-        return new Unsigned(
-         Unsigned::fromUnsigned($obj->{'unsigned'})
+        return new UseSerializers(
+         UseSerializers::fromUseSerializers($obj->{'UseSerializers'})
         );
     }
 
     /**
-     * @return Unsigned
+     * @return UseSerializers
      */
-    public static function sample(): Unsigned {
-        return new Unsigned(
-         Unsigned::sampleUnsigned()
+    public static function sample(): UseSerializers {
+        return new UseSerializers(
+         UseSerializers::sampleUseSerializers()
         );
     }
 }
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 c62938e..1136cc3 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
@@ -3355,6 +3355,7 @@ class Obj3 {
     Locale                     locale;                         // json: "Locale"
     Lock                       lock;                           // json: "lock"
     Long                       long;                           // json: "long"
+    MakeDictEncoder            make_dict_encoder;              // json: "makeDictEncoder"
     Map                        map;                            // json: "map"
     MapEntry                   map_entry;                      // json: "MapEntry"
     MarshalJson                marshal_json;                   // json: "MarshalJSON"
@@ -3366,8 +3367,6 @@ class Obj3 {
     Native                     native;                         // json: "native"
     New                        new;                            // json: "new"
     Newtonsoft                 newtonsoft;                     // json: "newtonsoft"
-    Nil                        nil;                            // json: "nil"
-    No                         no;                             // json: "NO"
     If                         obj3_if;                        // json: "if"
     Import                     obj3_import;                    // json: "import"
     Inline                     obj3_inline;                    // json: "inline"
@@ -3424,6 +3423,7 @@ class Obj3 {
             "Locale" : locale,
             "lock" : lock,
             "long" : long,
+            "makeDictEncoder" : make_dict_encoder,
             "map" : map,
             "MapEntry" : map_entry,
             "MarshalJSON" : marshal_json,
@@ -3435,8 +3435,6 @@ class Obj3 {
             "native" : native,
             "new" : new,
             "newtonsoft" : newtonsoft,
-            "nil" : nil,
-            "NO" : no,
             "if" : obj3_if,
             "import" : obj3_import,
             "inline" : obj3_inline,
@@ -3547,6 +3545,8 @@ Obj3 Obj3_from_JSON(mixed json) {
     retval.lock = json["lock"];
     if (!mappingp(json["long"])) error("Expected object");
     retval.long = json["long"];
+    if (!mappingp(json["makeDictEncoder"])) error("Expected object");
+    retval.make_dict_encoder = json["makeDictEncoder"];
     if (!mappingp(json["map"])) error("Expected object");
     retval.map = json["map"];
     if (!mappingp(json["MapEntry"])) error("Expected object");
@@ -3569,10 +3569,6 @@ Obj3 Obj3_from_JSON(mixed json) {
     retval.new = json["new"];
     if (!mappingp(json["newtonsoft"])) error("Expected object");
     retval.newtonsoft = json["newtonsoft"];
-    if (!mappingp(json["nil"])) error("Expected object");
-    retval.nil = json["nil"];
-    if (!mappingp(json["NO"])) error("Expected object");
-    retval.no = json["NO"];
     if (!mappingp(json["if"])) error("Expected object");
     retval.obj3_if = json["if"];
     if (!mappingp(json["import"])) error("Expected object");
@@ -4573,6 +4569,27 @@ Long Long_from_JSON(mixed json) {
     return retval;
 }
 
+class MakeDictEncoder {
+    int make_dict_encoder; // json: "makeDictEncoder"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "makeDictEncoder" : make_dict_encoder,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+MakeDictEncoder MakeDictEncoder_from_JSON(mixed json) {
+    MakeDictEncoder retval = MakeDictEncoder();
+
+    if (!intp(json["makeDictEncoder"])) error("Expected integer");
+    retval.make_dict_encoder = json["makeDictEncoder"];
+
+    return retval;
+}
+
 class Map {
     int map; // json: "map"
 
@@ -4804,48 +4821,6 @@ Newtonsoft Newtonsoft_from_JSON(mixed json) {
     return retval;
 }
 
-class Nil {
-    int nil; // json: "nil"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "nil" : nil,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Nil Nil_from_JSON(mixed json) {
-    Nil retval = Nil();
-
-    if (!intp(json["nil"])) error("Expected integer");
-    retval.nil = json["nil"];
-
-    return retval;
-}
-
-class No {
-    int no; // json: "NO"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "NO" : no,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-No No_from_JSON(mixed json) {
-    No retval = No();
-
-    if (!intp(json["NO"])) error("Expected integer");
-    retval.no = json["NO"];
-
-    return retval;
-}
-
 class If {
     int if_if; // json: "if"
 
@@ -4953,6 +4928,8 @@ Lambda Lambda_from_JSON(mixed json) {
 
 class Obj4 {
     int             dummy;            // json: "dummy"
+    Nil             nil;              // json: "nil"
+    No              no;               // json: "NO"
     NoSuchMethod    no_such_method;   // json: "noSuchMethod"
     Noexcept        noexcept;         // json: "noexcept"
     Nonatomic       nonatomic;        // json: "nonatomic"
@@ -5015,12 +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"
 
     string encode_json() {
         mapping(string:mixed) json = ([
             "dummy" : dummy,
+            "nil" : nil,
+            "NO" : no,
             "noSuchMethod" : no_such_method,
             "noexcept" : noexcept,
             "nonatomic" : nonatomic,
@@ -5083,8 +5060,6 @@ class Obj4 {
             "runtimeType" : runtime_type,
             "s" : s,
             "sbyte" : sbyte,
-            "sealed" : sealed,
-            "SEL" : sel,
         ]);
 
         return Standards.JSON.encode(json);
@@ -5096,6 +5071,10 @@ Obj4 Obj4_from_JSON(mixed json) {
 
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
+    if (!mappingp(json["nil"])) error("Expected object");
+    retval.nil = json["nil"];
+    if (!mappingp(json["NO"])) error("Expected object");
+    retval.no = json["NO"];
     if (!mappingp(json["noSuchMethod"])) error("Expected object");
     retval.no_such_method = json["noSuchMethod"];
     if (!mappingp(json["noexcept"])) error("Expected object");
@@ -5220,10 +5199,48 @@ 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"];
+
+    return retval;
+}
+
+class Nil {
+    int nil; // json: "nil"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "nil" : nil,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nil Nil_from_JSON(mixed json) {
+    Nil retval = Nil();
+
+    if (!intp(json["nil"])) error("Expected integer");
+    retval.nil = json["nil"];
+
+    return retval;
+}
+
+class No {
+    int no; // json: "NO"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "NO" : no,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+No No_from_JSON(mixed json) {
+    No retval = No();
+
+    if (!intp(json["NO"])) error("Expected integer");
+    retval.no = json["NO"];
 
     return retval;
 }
@@ -6529,48 +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 Obj5 {
     int                dummy;               // json: "dummy"
     KSerializer        k_serializer;        // json: "KSerializer"
@@ -6583,6 +6558,8 @@ 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"
@@ -6635,9 +6612,6 @@ class Obj5 {
     Undefined          undefined;           // json: "undefined"
     Union              union;               // json: "union"
     UnmarshalJson      unmarshal_json;      // json: "UnmarshalJSON"
-    Unowned            unowned;             // json: "unowned"
-    Unsafe             unsafe;              // json: "unsafe"
-    UseSerializers     use_serializers;     // json: "UseSerializers"
 
     string encode_json() {
         mapping(string:mixed) json = ([
@@ -6652,6 +6626,8 @@ class Obj5 {
             "typedef" : obj5_typedef,
             "typeof" : obj5_typeof,
             "PrimitiveKind" : primitive_kind,
+            "sealed" : sealed,
+            "SEL" : sel,
             "select" : select,
             "Self" : self,
             "Sendable" : sendable,
@@ -6704,9 +6680,6 @@ class Obj5 {
             "undefined" : undefined,
             "union" : union,
             "UnmarshalJSON" : unmarshal_json,
-            "unowned" : unowned,
-            "unsafe" : unsafe,
-            "UseSerializers" : use_serializers,
         ]);
 
         return Standards.JSON.encode(json);
@@ -6738,6 +6711,10 @@ 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");
@@ -6842,12 +6819,6 @@ Obj5 Obj5_from_JSON(mixed json) {
     retval.union = json["union"];
     if (!mappingp(json["UnmarshalJSON"])) error("Expected object");
     retval.unmarshal_json = json["UnmarshalJSON"];
-    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["UseSerializers"])) error("Expected object");
-    retval.use_serializers = json["UseSerializers"];
 
     return retval;
 }
@@ -7062,6 +7033,48 @@ 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"
 
@@ -8154,74 +8167,14 @@ UnmarshalJson UnmarshalJson_from_JSON(mixed json) {
     return retval;
 }
 
-class Unowned {
-    int unowned; // json: "unowned"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "unowned" : unowned,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Unowned Unowned_from_JSON(mixed json) {
-    Unowned retval = Unowned();
-
-    if (!intp(json["unowned"])) error("Expected integer");
-    retval.unowned = json["unowned"];
-
-    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 UseSerializers {
-    int use_serializers; // json: "UseSerializers"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "UseSerializers" : use_serializers,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-UseSerializers UseSerializers_from_JSON(mixed json) {
-    UseSerializers retval = UseSerializers();
-
-    if (!intp(json["UseSerializers"])) error("Expected integer");
-    retval.use_serializers = json["UseSerializers"];
-
-    return retval;
-}
-
 class Obj6 {
     int            dummy;            // json: "dummy"
     Void           obj6_void;        // json: "void"
     While          obj6_while;       // json: "while"
+    Unowned        unowned;          // json: "unowned"
+    Unsafe         unsafe;           // json: "unsafe"
     Unsigned       unsigned;         // json: "unsigned"
+    UseSerializers use_serializers;  // json: "UseSerializers"
     Ushort         ushort;           // json: "ushort"
     Using          using;            // json: "using"
     Utf8JsonReader utf8_json_reader; // json: "Utf8JsonReader"
@@ -8245,7 +8198,10 @@ class Obj6 {
             "dummy" : dummy,
             "void" : obj6_void,
             "while" : obj6_while,
+            "unowned" : unowned,
+            "unsafe" : unsafe,
             "unsigned" : unsigned,
+            "UseSerializers" : use_serializers,
             "ushort" : ushort,
             "using" : using,
             "Utf8JsonReader" : utf8_json_reader,
@@ -8278,8 +8234,14 @@ 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["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"];
     if (!mappingp(json["using"])) error("Expected object");
@@ -8360,6 +8322,48 @@ While While_from_JSON(mixed json) {
     return retval;
 }
 
+class Unowned {
+    int unowned; // json: "unowned"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "unowned" : unowned,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unowned Unowned_from_JSON(mixed json) {
+    Unowned retval = Unowned();
+
+    if (!intp(json["unowned"])) error("Expected integer");
+    retval.unowned = json["unowned"];
+
+    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"
 
@@ -8381,6 +8385,27 @@ Unsigned Unsigned_from_JSON(mixed json) {
     return retval;
 }
 
+class UseSerializers {
+    int use_serializers; // json: "UseSerializers"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "UseSerializers" : use_serializers,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+UseSerializers UseSerializers_from_JSON(mixed json) {
+    UseSerializers retval = UseSerializers();
+
+    if (!intp(json["UseSerializers"])) error("Expected integer");
+    retval.use_serializers = json["UseSerializers"];
+
+    return retval;
+}
+
 class Ushort {
     int ushort; // json: "ushort"
 
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 67369c6..26f6391 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
@@ -3244,6 +3244,22 @@ class Long:
         return result
 
 
+@dataclass
+class MakeDictEncoder:
+    make_dict_encoder: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'MakeDictEncoder':
+        assert isinstance(obj, dict)
+        make_dict_encoder = from_int(obj["makeDictEncoder"])
+        return MakeDictEncoder(make_dict_encoder)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["makeDictEncoder"] = from_int(self.make_dict_encoder)
+        return result
+
+
 @dataclass
 class Map:
     map: int
@@ -3420,38 +3436,6 @@ class Newtonsoft:
         return result
 
 
-@dataclass
-class Nil:
-    nil: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Nil':
-        assert isinstance(obj, dict)
-        nil = from_int(obj["nil"])
-        return Nil(nil)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["nil"] = from_int(self.nil)
-        return result
-
-
-@dataclass
-class No:
-    no: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'No':
-        assert isinstance(obj, dict)
-        no = from_int(obj["NO"])
-        return No(no)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["NO"] = from_int(self.no)
-        return result
-
-
 @dataclass
 class If:
     if_if: int
@@ -3568,7 +3552,6 @@ class Obj3:
     locale: Locale
     map_entry: MapEntry
     marshal_json: MarshalJSON
-    no: No
     dummy: int
     goto: Goto
     guard: Guard
@@ -3606,6 +3589,7 @@ class Obj3:
     list: ListClass
     lock: Lock
     long: Long
+    make_dict_encoder: MakeDictEncoder
     map: Map
     metadata_property_handling: MetadataPropertyHandling
     module: Module
@@ -3615,7 +3599,6 @@ class Obj3:
     native: Native
     new: New
     newtonsoft: Newtonsoft
-    nil: Nil
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj3':
@@ -3638,7 +3621,6 @@ class Obj3:
         locale = Locale.from_dict(obj["Locale"])
         map_entry = MapEntry.from_dict(obj["MapEntry"])
         marshal_json = MarshalJSON.from_dict(obj["MarshalJSON"])
-        no = No.from_dict(obj["NO"])
         dummy = from_int(obj["dummy"])
         goto = Goto.from_dict(obj["goto"])
         guard = Guard.from_dict(obj["guard"])
@@ -3676,6 +3658,7 @@ class Obj3:
         list = ListClass.from_dict(obj["list"])
         lock = Lock.from_dict(obj["lock"])
         long = Long.from_dict(obj["long"])
+        make_dict_encoder = MakeDictEncoder.from_dict(obj["makeDictEncoder"])
         map = Map.from_dict(obj["map"])
         metadata_property_handling = MetadataPropertyHandling.from_dict(obj["metadata_property_handling"])
         module = Module.from_dict(obj["module"])
@@ -3685,8 +3668,7 @@ class Obj3:
         native = Native.from_dict(obj["native"])
         new = New.from_dict(obj["new"])
         newtonsoft = Newtonsoft.from_dict(obj["newtonsoft"])
-        nil = Nil.from_dict(obj["nil"])
-        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, marshal_json, no, dummy, goto, guard, has_own_property, hash_code, id, obj3_if, implements, implicit, obj3_import, obj3_in, indirect, infix, init, inline, inout, instanceof, obj3_int, interface, internal, obj3_is, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, obj3_lambda, lazy, left, let, list, lock, long, map, metadata_property_handling, module, mutable, mutating, namespace, native, new, newtonsoft, nil)
+        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, marshal_json, dummy, goto, guard, has_own_property, hash_code, id, obj3_if, implements, implicit, obj3_import, obj3_in, indirect, infix, init, inline, inout, instanceof, obj3_int, interface, internal, obj3_is, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, obj3_lambda, lazy, left, let, list, lock, long, make_dict_encoder, map, metadata_property_handling, module, mutable, mutating, namespace, native, new, newtonsoft)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -3708,7 +3690,6 @@ class Obj3:
         result["Locale"] = to_class(Locale, self.locale)
         result["MapEntry"] = to_class(MapEntry, self.map_entry)
         result["MarshalJSON"] = to_class(MarshalJSON, self.marshal_json)
-        result["NO"] = to_class(No, self.no)
         result["dummy"] = from_int(self.dummy)
         result["goto"] = to_class(Goto, self.goto)
         result["guard"] = to_class(Guard, self.guard)
@@ -3746,6 +3727,7 @@ class Obj3:
         result["list"] = to_class(ListClass, self.list)
         result["lock"] = to_class(Lock, self.lock)
         result["long"] = to_class(Long, self.long)
+        result["makeDictEncoder"] = to_class(MakeDictEncoder, self.make_dict_encoder)
         result["map"] = to_class(Map, self.map)
         result["metadata_property_handling"] = to_class(MetadataPropertyHandling, self.metadata_property_handling)
         result["module"] = to_class(Module, self.module)
@@ -3755,7 +3737,38 @@ class Obj3:
         result["native"] = to_class(Native, self.native)
         result["new"] = to_class(New, self.new)
         result["newtonsoft"] = to_class(Newtonsoft, self.newtonsoft)
-        result["nil"] = to_class(Nil, self.nil)
+        return result
+
+
+@dataclass
+class Nil:
+    nil: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Nil':
+        assert isinstance(obj, dict)
+        nil = from_int(obj["nil"])
+        return Nil(nil)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["nil"] = from_int(self.nil)
+        return result
+
+
+@dataclass
+class No:
+    no: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'No':
+        assert isinstance(obj, dict)
+        no = from_int(obj["NO"])
+        return No(no)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["NO"] = from_int(self.no)
         return result
 
 
@@ -4751,40 +4764,9 @@ 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 Obj4:
+    no: No
     ns_error: NSError
     ns_object: NSObject
     ns_string: NSString
@@ -4793,8 +4775,8 @@ class Obj4:
     object_mapper: ObjectMapper
     protocol: Protocol
     reg_exp: RegExp
-    sel: Sel
     dummy: int
+    nil: Nil
     no_such_method: NoSuchMethod
     noexcept: Noexcept
     nonatomic: Nonatomic
@@ -4849,11 +4831,11 @@ class Obj4:
     runtime_type: RuntimeType
     s: S
     sbyte: Sbyte
-    sealed: Sealed
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj4':
         assert isinstance(obj, dict)
+        no = No.from_dict(obj["NO"])
         ns_error = NSError.from_dict(obj["NSError"])
         ns_object = NSObject.from_dict(obj["NSObject"])
         ns_string = NSString.from_dict(obj["NSString"])
@@ -4862,8 +4844,8 @@ class Obj4:
         object_mapper = ObjectMapper.from_dict(obj["ObjectMapper"])
         protocol = Protocol.from_dict(obj["Protocol"])
         reg_exp = RegExp.from_dict(obj["RegExp"])
-        sel = Sel.from_dict(obj["SEL"])
         dummy = from_int(obj["dummy"])
+        nil = Nil.from_dict(obj["nil"])
         no_such_method = NoSuchMethod.from_dict(obj["noSuchMethod"])
         noexcept = Noexcept.from_dict(obj["noexcept"])
         nonatomic = Nonatomic.from_dict(obj["nonatomic"])
@@ -4918,11 +4900,11 @@ 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"])
-        return Obj4(ns_error, ns_object, ns_string, null, none, object_mapper, protocol, reg_exp, sel, 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, sealed)
+        return Obj4(no, ns_error, ns_object, ns_string, null, none, object_mapper, protocol, reg_exp, dummy, nil, no_such_method, noexcept, nonatomic, obj4_none, obj4_nonlocal, nonmutating, obj4_not, not_eq, obj4_null, nullptr, number, object, of, oneway, open, operator, optional, obj4_or, or_eq, out, override, package, params, obj4_pass, port, postfix, precedence, prefix, obj4_print, print_members, printf, private, protected, obj4_protocol, public, quicktype, obj4_raise, range, readonly, ref, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows, obj4_return, right, runtime_type, s, sbyte)
 
     def to_dict(self) -> dict:
         result: dict = {}
+        result["NO"] = to_class(No, self.no)
         result["NSError"] = to_class(NSError, self.ns_error)
         result["NSObject"] = to_class(NSObject, self.ns_object)
         result["NSString"] = to_class(NSString, self.ns_string)
@@ -4931,8 +4913,8 @@ class Obj4:
         result["ObjectMapper"] = to_class(ObjectMapper, self.object_mapper)
         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["nil"] = to_class(Nil, self.nil)
         result["noSuchMethod"] = to_class(NoSuchMethod, self.no_such_method)
         result["noexcept"] = to_class(Noexcept, self.noexcept)
         result["nonatomic"] = to_class(Nonatomic, self.nonatomic)
@@ -4987,7 +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)
         return result
 
 
@@ -5119,6 +5100,38 @@ 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
@@ -5983,58 +5996,11 @@ class UnmarshalJSON:
         return result
 
 
-@dataclass
-class Unowned:
-    unowned: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Unowned':
-        assert isinstance(obj, dict)
-        unowned = from_int(obj["unowned"])
-        return Unowned(unowned)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["unowned"] = from_int(self.unowned)
-        return result
-
-
-@dataclass
-class Unsafe:
-    unsafe: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Unsafe':
-        assert isinstance(obj, dict)
-        unsafe = from_int(obj["unsafe"])
-        return Unsafe(unsafe)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["unsafe"] = from_int(self.unsafe)
-        return result
-
-
-@dataclass
-class UseSerializers:
-    use_serializers: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'UseSerializers':
-        assert isinstance(obj, dict)
-        use_serializers = from_int(obj["UseSerializers"])
-        return UseSerializers(use_serializers)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["UseSerializers"] = from_int(self.use_serializers)
-        return result
-
-
 @dataclass
 class Obj5:
     k_serializer: KSerializer
     primitive_kind: PrimitiveKind
+    sel: Sel
     obj5_self: Self
     sendable: Sendable
     serial_descriptor: SerialDescriptor
@@ -6051,8 +6017,8 @@ class Obj5:
     true: TrueClass
     type: TypeClass
     unmarshal_json: UnmarshalJSON
-    use_serializers: UseSerializers
     dummy: int
+    sealed: Sealed
     select: Select
     purple_self: SelfClass
     serialize: Serialize
@@ -6097,14 +6063,13 @@ class Obj5:
     unchecked: Unchecked
     undefined: Undefined
     union: UnionClass
-    unowned: Unowned
-    unsafe: Unsafe
 
     @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"])
@@ -6121,8 +6086,8 @@ class Obj5:
         true = TrueClass.from_dict(obj["True"])
         type = TypeClass.from_dict(obj["Type"])
         unmarshal_json = UnmarshalJSON.from_dict(obj["UnmarshalJSON"])
-        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"])
@@ -6167,14 +6132,13 @@ class Obj5:
         unchecked = Unchecked.from_dict(obj["unchecked"])
         undefined = Undefined.from_dict(obj["undefined"])
         union = UnionClass.from_dict(obj["union"])
-        unowned = Unowned.from_dict(obj["unowned"])
-        unsafe = Unsafe.from_dict(obj["unsafe"])
-        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, unmarshal_json, use_serializers, dummy, 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, obj5_to_dict, to_json, top_level, transient, obj5_true, obj5_try, obj5_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe)
+        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, unmarshal_json, 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, obj5_to_dict, to_json, top_level, transient, obj5_true, obj5_try, obj5_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union)
 
     def to_dict(self) -> dict:
         result: dict = {}
         result["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)
@@ -6191,8 +6155,8 @@ class Obj5:
         result["True"] = to_class(TrueClass, self.true)
         result["Type"] = to_class(TypeClass, self.type)
         result["UnmarshalJSON"] = to_class(UnmarshalJSON, self.unmarshal_json)
-        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)
@@ -6237,8 +6201,6 @@ class Obj5:
         result["unchecked"] = to_class(Unchecked, self.unchecked)
         result["undefined"] = to_class(Undefined, self.undefined)
         result["union"] = to_class(UnionClass, self.union)
-        result["unowned"] = to_class(Unowned, self.unowned)
-        result["unsafe"] = to_class(Unsafe, self.unsafe)
         return result
 
 
@@ -6290,6 +6252,38 @@ class Yield:
         return result
 
 
+@dataclass
+class Unowned:
+    unowned: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Unowned':
+        assert isinstance(obj, dict)
+        unowned = from_int(obj["unowned"])
+        return Unowned(unowned)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["unowned"] = from_int(self.unowned)
+        return result
+
+
+@dataclass
+class Unsafe:
+    unsafe: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Unsafe':
+        assert isinstance(obj, dict)
+        unsafe = from_int(obj["unsafe"])
+        return Unsafe(unsafe)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["unsafe"] = from_int(self.unsafe)
+        return result
+
+
 @dataclass
 class Unsigned:
     unsigned: int
@@ -6306,6 +6300,22 @@ class Unsigned:
         return result
 
 
+@dataclass
+class UseSerializers:
+    use_serializers: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'UseSerializers':
+        assert isinstance(obj, dict)
+        use_serializers = from_int(obj["UseSerializers"])
+        return UseSerializers(use_serializers)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["UseSerializers"] = from_int(self.use_serializers)
+        return result
+
+
 @dataclass
 class Ushort:
     ushort: int
@@ -6565,10 +6575,13 @@ class Yes:
 @dataclass
 class Obj6:
     uuid: UUIDClass
+    use_serializers: UseSerializers
     utf8_json_reader: Utf8JSONReader
     utf8_json_writer: Utf8JSONWriter
     yes: Yes
     dummy: int
+    unowned: Unowned
+    unsafe: Unsafe
     unsigned: Unsigned
     ushort: Ushort
     using: Using
@@ -6590,10 +6603,13 @@ class Obj6:
     def from_dict(obj: Any) -> 'Obj6':
         assert isinstance(obj, dict)
         uuid = UUIDClass.from_dict(obj["UUID"])
+        use_serializers = UseSerializers.from_dict(obj["UseSerializers"])
         utf8_json_reader = Utf8JSONReader.from_dict(obj["Utf8JsonReader"])
         utf8_json_writer = Utf8JSONWriter.from_dict(obj["Utf8JsonWriter"])
         yes = Yes.from_dict(obj["YES"])
         dummy = from_int(obj["dummy"])
+        unowned = Unowned.from_dict(obj["unowned"])
+        unsafe = Unsafe.from_dict(obj["unsafe"])
         unsigned = Unsigned.from_dict(obj["unsigned"])
         ushort = Ushort.from_dict(obj["ushort"])
         using = Using.from_dict(obj["using"])
@@ -6610,15 +6626,18 @@ class Obj6:
         xor = Xor.from_dict(obj["xor"])
         xor_eq = XorEq.from_dict(obj["xor_eq"])
         obj6_yield = Yield.from_dict(obj["yield"])
-        return Obj6(uuid, utf8_json_reader, utf8_json_writer, yes, dummy, unsigned, ushort, using, var, virtual, void, volatile, wchar_t, weak, where, obj6_while, will_set, obj6_with, xor, xor_eq, obj6_yield)
+        return Obj6(uuid, use_serializers, utf8_json_reader, utf8_json_writer, yes, dummy, unowned, unsafe, unsigned, ushort, using, var, virtual, void, volatile, wchar_t, weak, where, obj6_while, will_set, obj6_with, xor, xor_eq, obj6_yield)
 
     def to_dict(self) -> dict:
         result: dict = {}
         result["UUID"] = to_class(UUIDClass, self.uuid)
+        result["UseSerializers"] = to_class(UseSerializers, self.use_serializers)
         result["Utf8JsonReader"] = to_class(Utf8JSONReader, self.utf8_json_reader)
         result["Utf8JsonWriter"] = to_class(Utf8JSONWriter, self.utf8_json_writer)
         result["YES"] = to_class(Yes, self.yes)
         result["dummy"] = from_int(self.dummy)
+        result["unowned"] = to_class(Unowned, self.unowned)
+        result["unsafe"] = to_class(Unsafe, self.unsafe)
         result["unsigned"] = to_class(Unsigned, self.unsigned)
         result["ushort"] = to_class(Ushort, self.ushort)
         result["using"] = to_class(Using, self.using)
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 98b81a9..6d339cb 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
@@ -4886,6 +4886,31 @@ class Long < Dry::Struct
   end
 end
 
+class MakeDictEncoder < Dry::Struct
+  attribute :make_dict_encoder, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      make_dict_encoder: d.fetch("makeDictEncoder"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "makeDictEncoder" => make_dict_encoder,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Map < Dry::Struct
   attribute :map, Types::Integer
 
@@ -5111,31 +5136,6 @@ class Newtonsoft < Dry::Struct
   end
 end
 
-class No < Dry::Struct
-  attribute :no, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      no: d.fetch("NO"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "NO" => no,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class If < Dry::Struct
   attribute :if_if, Types::Integer
 
@@ -5261,31 +5261,6 @@ class New < Dry::Struct
   end
 end
 
-class Nil < Dry::Struct
-  attribute :nil_nil, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      nil_nil: d.fetch("nil"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "nil" => nil_nil,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class Obj3 < Dry::Struct
   attribute :dummy,                          Types::Integer
   attribute :goto,                           Goto
@@ -5337,6 +5312,7 @@ class Obj3 < Dry::Struct
   attribute :locale,                         Locale
   attribute :lock,                           Lock
   attribute :long,                           Long
+  attribute :make_dict_encoder,              MakeDictEncoder
   attribute :map,                            Map
   attribute :map_entry,                      MapEntry
   attribute :marshal_json,                   MarshalJSON
@@ -5346,13 +5322,11 @@ class Obj3 < Dry::Struct
   attribute :namespace,                      Namespace
   attribute :native,                         Native
   attribute :newtonsoft,                     Newtonsoft
-  attribute :no,                             No
   attribute :obj3_if,                        If
   attribute :obj3_in,                        In
   attribute :obj3_lambda,                    Lambda
   attribute :obj3_module,                    ModuleClass
   attribute :obj3_new,                       New
-  attribute :obj3_nil,                       Nil
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
@@ -5407,6 +5381,7 @@ class Obj3 < Dry::Struct
       locale:                         Locale.from_dynamic!(d.fetch("Locale")),
       lock:                           Lock.from_dynamic!(d.fetch("lock")),
       long:                           Long.from_dynamic!(d.fetch("long")),
+      make_dict_encoder:              MakeDictEncoder.from_dynamic!(d.fetch("makeDictEncoder")),
       map:                            Map.from_dynamic!(d.fetch("map")),
       map_entry:                      MapEntry.from_dynamic!(d.fetch("MapEntry")),
       marshal_json:                   MarshalJSON.from_dynamic!(d.fetch("MarshalJSON")),
@@ -5416,13 +5391,11 @@ class Obj3 < Dry::Struct
       namespace:                      Namespace.from_dynamic!(d.fetch("namespace")),
       native:                         Native.from_dynamic!(d.fetch("native")),
       newtonsoft:                     Newtonsoft.from_dynamic!(d.fetch("newtonsoft")),
-      no:                             No.from_dynamic!(d.fetch("NO")),
       obj3_if:                        If.from_dynamic!(d.fetch("if")),
       obj3_in:                        In.from_dynamic!(d.fetch("in")),
       obj3_lambda:                    Lambda.from_dynamic!(d.fetch("lambda")),
       obj3_module:                    ModuleClass.from_dynamic!(d.fetch("module")),
       obj3_new:                       New.from_dynamic!(d.fetch("new")),
-      obj3_nil:                       Nil.from_dynamic!(d.fetch("nil")),
     )
   end
 
@@ -5482,6 +5455,7 @@ class Obj3 < Dry::Struct
       "Locale"                     => locale.to_dynamic,
       "lock"                       => lock.to_dynamic,
       "long"                       => long.to_dynamic,
+      "makeDictEncoder"            => make_dict_encoder.to_dynamic,
       "map"                        => map.to_dynamic,
       "MapEntry"                   => map_entry.to_dynamic,
       "MarshalJSON"                => marshal_json.to_dynamic,
@@ -5491,13 +5465,36 @@ class Obj3 < Dry::Struct
       "namespace"                  => namespace.to_dynamic,
       "native"                     => native.to_dynamic,
       "newtonsoft"                 => newtonsoft.to_dynamic,
-      "NO"                         => no.to_dynamic,
       "if"                         => obj3_if.to_dynamic,
       "in"                         => obj3_in.to_dynamic,
       "lambda"                     => obj3_lambda.to_dynamic,
       "module"                     => obj3_module.to_dynamic,
       "new"                        => obj3_new.to_dynamic,
-      "nil"                        => obj3_nil.to_dynamic,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class No < Dry::Struct
+  attribute :no, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      no: d.fetch("NO"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "NO" => no,
     }
   end
 
@@ -5831,6 +5828,31 @@ class Number < Dry::Struct
   end
 end
 
+class Nil < Dry::Struct
+  attribute :nil_nil, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      nil_nil: d.fetch("nil"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "nil" => nil_nil,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class NoneClass < Dry::Struct
   attribute :none, Types::Integer
 
@@ -7056,58 +7078,9 @@ 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,               No
   attribute :no_such_method,   NoSuchMethod
   attribute :noexcept,         Noexcept
   attribute :nonatomic,        Nonatomic
@@ -7121,6 +7094,7 @@ class Obj4 < Dry::Struct
   attribute :null,             Null
   attribute :nullptr,          Nullptr
   attribute :number,           Number
+  attribute :obj4_nil,         Nil
   attribute :obj4_none,        NoneClass
   attribute :obj4_not,         Not
   attribute :obj4_null,        NullClass
@@ -7170,13 +7144,12 @@ 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:               No.from_dynamic!(d.fetch("NO")),
       no_such_method:   NoSuchMethod.from_dynamic!(d.fetch("noSuchMethod")),
       noexcept:         Noexcept.from_dynamic!(d.fetch("noexcept")),
       nonatomic:        Nonatomic.from_dynamic!(d.fetch("nonatomic")),
@@ -7190,6 +7163,7 @@ class Obj4 < Dry::Struct
       null:             Null.from_dynamic!(d.fetch("NULL")),
       nullptr:          Nullptr.from_dynamic!(d.fetch("nullptr")),
       number:           Number.from_dynamic!(d.fetch("number")),
+      obj4_nil:         Nil.from_dynamic!(d.fetch("nil")),
       obj4_none:        NoneClass.from_dynamic!(d.fetch("none")),
       obj4_not:         Not.from_dynamic!(d.fetch("not")),
       obj4_null:        NullClass.from_dynamic!(d.fetch("null")),
@@ -7239,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
 
@@ -7251,6 +7223,7 @@ class Obj4 < Dry::Struct
   def to_dynamic
     {
       "dummy"            => dummy,
+      "NO"               => no.to_dynamic,
       "noSuchMethod"     => no_such_method.to_dynamic,
       "noexcept"         => noexcept.to_dynamic,
       "nonatomic"        => nonatomic.to_dynamic,
@@ -7264,6 +7237,7 @@ class Obj4 < Dry::Struct
       "NULL"             => null.to_dynamic,
       "nullptr"          => nullptr.to_dynamic,
       "number"           => number.to_dynamic,
+      "nil"              => obj4_nil.to_dynamic,
       "none"             => obj4_none.to_dynamic,
       "not"              => obj4_not.to_dynamic,
       "null"             => obj4_null.to_dynamic,
@@ -7313,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
 
@@ -7623,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
 
@@ -8873,81 +8895,6 @@ class UnmarshalJSON < Dry::Struct
   end
 end
 
-class Unowned < Dry::Struct
-  attribute :unowned, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      unowned: d.fetch("unowned"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "unowned" => unowned,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  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 UseSerializers < Dry::Struct
-  attribute :use_serializers, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      use_serializers: d.fetch("UseSerializers"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "UseSerializers" => use_serializers,
-    }
-  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
@@ -8962,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
@@ -9012,9 +8961,6 @@ class Obj5 < Dry::Struct
   attribute :undefined,           UndefinedClass
   attribute :union,               Union
   attribute :unmarshal_json,      UnmarshalJSON
-  attribute :unowned,             Unowned
-  attribute :unsafe,              Unsafe
-  attribute :use_serializers,     UseSerializers
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
@@ -9032,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")),
@@ -9082,9 +9030,6 @@ class Obj5 < Dry::Struct
       undefined:           UndefinedClass.from_dynamic!(d.fetch("undefined")),
       union:               Union.from_dynamic!(d.fetch("union")),
       unmarshal_json:      UnmarshalJSON.from_dynamic!(d.fetch("UnmarshalJSON")),
-      unowned:             Unowned.from_dynamic!(d.fetch("unowned")),
-      unsafe:              Unsafe.from_dynamic!(d.fetch("unsafe")),
-      use_serializers:     UseSerializers.from_dynamic!(d.fetch("UseSerializers")),
     )
   end
 
@@ -9107,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,
@@ -9157,9 +9104,6 @@ class Obj5 < Dry::Struct
       "undefined"          => undefined.to_dynamic,
       "union"              => union.to_dynamic,
       "UnmarshalJSON"      => unmarshal_json.to_dynamic,
-      "unowned"            => unowned.to_dynamic,
-      "unsafe"             => unsafe.to_dynamic,
-      "UseSerializers"     => use_serializers.to_dynamic,
     }
   end
 
@@ -9243,6 +9187,56 @@ class Yield < Dry::Struct
   end
 end
 
+class Unowned < Dry::Struct
+  attribute :unowned, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      unowned: d.fetch("unowned"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "unowned" => unowned,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  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
 
@@ -9268,6 +9262,31 @@ class Unsigned < Dry::Struct
   end
 end
 
+class UseSerializers < Dry::Struct
+  attribute :use_serializers, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      use_serializers: d.fetch("UseSerializers"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "UseSerializers" => use_serializers,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Ushort < Dry::Struct
   attribute :ushort, Types::Integer
 
@@ -9673,7 +9692,10 @@ class Obj6 < Dry::Struct
   attribute :obj6_while,       While
   attribute :obj6_with,        With
   attribute :obj6_yield,       Yield
+  attribute :unowned,          Unowned
+  attribute :unsafe,           Unsafe
   attribute :unsigned,         Unsigned
+  attribute :use_serializers,  UseSerializers
   attribute :ushort,           Ushort
   attribute :using,            Using
   attribute :utf8_json_reader, Utf8JSONReader
@@ -9698,7 +9720,10 @@ 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")),
+      unowned:          Unowned.from_dynamic!(d.fetch("unowned")),
+      unsafe:           Unsafe.from_dynamic!(d.fetch("unsafe")),
       unsigned:         Unsigned.from_dynamic!(d.fetch("unsigned")),
+      use_serializers:  UseSerializers.from_dynamic!(d.fetch("UseSerializers")),
       ushort:           Ushort.from_dynamic!(d.fetch("ushort")),
       using:            Using.from_dynamic!(d.fetch("using")),
       utf8_json_reader: Utf8JSONReader.from_dynamic!(d.fetch("Utf8JsonReader")),
@@ -9728,7 +9753,10 @@ class Obj6 < Dry::Struct
       "while"          => obj6_while.to_dynamic,
       "with"           => obj6_with.to_dynamic,
       "yield"          => obj6_yield.to_dynamic,
+      "unowned"        => unowned.to_dynamic,
+      "unsafe"         => unsafe.to_dynamic,
       "unsigned"       => unsigned.to_dynamic,
+      "UseSerializers" => use_serializers.to_dynamic,
       "ushort"         => ushort.to_dynamic,
       "using"          => using.to_dynamic,
       "Utf8JsonReader" => utf8_json_reader.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 193927e..3802358 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
@@ -1152,6 +1152,9 @@ pub struct Obj3 {
 
     pub long: Long,
 
+    #[serde(rename = "makeDictEncoder")]
+    pub make_dict_encoder: MakeDictEncoder,
+
     pub map: Map,
 
     #[serde(rename = "MapEntry")]
@@ -1176,11 +1179,6 @@ pub struct Obj3 {
 
     pub newtonsoft: Newtonsoft,
 
-    pub nil: Nil,
-
-    #[serde(rename = "NO")]
-    pub no: No,
-
     #[serde(rename = "if")]
     pub obj3_if: If,
 
@@ -1459,6 +1457,12 @@ pub struct Long {
     pub long: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct MakeDictEncoder {
+    pub make_dict_encoder: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Map {
     pub map: i64,
@@ -1517,17 +1521,6 @@ pub struct Newtonsoft {
     pub newtonsoft: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Nil {
-    pub nil: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
-pub struct No {
-    pub no: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct If {
     #[serde(rename = "if")]
@@ -1550,6 +1543,11 @@ pub struct Let {
 pub struct Obj4 {
     pub dummy: i64,
 
+    pub nil: Nil,
+
+    #[serde(rename = "NO")]
+    pub no: No,
+
     #[serde(rename = "noSuchMethod")]
     pub no_such_method: NoSuchMethod,
 
@@ -1690,11 +1688,17 @@ pub struct Obj4 {
     pub s: S,
 
     pub sbyte: Sbyte,
+}
 
-    pub sealed: Sealed,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Nil {
+    pub nil: i64,
+}
 
-    #[serde(rename = "SEL")]
-    pub sel: Sel,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
+pub struct No {
+    pub no: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -2024,17 +2028,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 Obj5 {
     pub dummy: i64,
@@ -2069,9 +2062,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,
 
@@ -2084,6 +2074,11 @@ 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")]
@@ -2193,11 +2188,6 @@ pub struct Obj5 {
 
     #[serde(rename = "UnmarshalJSON")]
     pub unmarshal_json: UnmarshalJson,
-
-    pub unowned: Unowned,
-
-    #[serde(rename = "UseSerializers")]
-    pub use_serializers: UseSerializers,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -2263,12 +2253,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 {
@@ -2293,6 +2277,17 @@ 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,
@@ -2548,21 +2543,13 @@ pub struct UnmarshalJson {
     pub unmarshal_json: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Unowned {
-    pub unowned: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "PascalCase")]
-pub struct UseSerializers {
-    pub use_serializers: 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,
 
@@ -2575,8 +2562,13 @@ pub struct Obj6 {
     #[serde(rename = "yield")]
     pub obj6_yield: Yield,
 
+    pub unowned: Unowned,
+
     pub unsigned: Unsigned,
 
+    #[serde(rename = "UseSerializers")]
+    pub use_serializers: UseSerializers,
+
     pub ushort: Ushort,
 
     pub using: Using,
@@ -2613,6 +2605,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")]
@@ -2637,11 +2635,22 @@ pub struct Yield {
     pub yield_yield: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Unowned {
+    pub unowned: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Unsigned {
     pub unsigned: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct UseSerializers {
+    pub use_serializers: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Ushort {
     pub ushort: 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 fab2582..583af48 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
@@ -757,6 +757,7 @@ case class Obj3 (
     val Locale : Locale,
     val lock : Lock,
     val long : LongClass,
+    val makeDictEncoder : MakeDictEncoder,
     val map : MapClass,
     val MapEntry : MapEntry,
     val MarshalJSON : MarshalJSON,
@@ -767,8 +768,6 @@ case class Obj3 (
     val namespace : Namespace,
     val native : Native,
     val newtonsoft : Newtonsoft,
-    val nil : Nil,
-    val NO : No,
     val `if` : If,
     val `implicit` : Implicit,
     val `import` : Import,
@@ -986,6 +985,10 @@ case class LongClass (
     val long : Long
 ) derives Encoder.AsObject, Decoder
 
+case class MakeDictEncoder (
+    val makeDictEncoder : Long
+) derives Encoder.AsObject, Decoder
+
 case class MapClass (
     val map : Long
 ) derives Encoder.AsObject, Decoder
@@ -1026,14 +1029,6 @@ case class Newtonsoft (
     val newtonsoft : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Nil (
-    val nil : Long
-) derives Encoder.AsObject, Decoder
-
-case class No (
-    val NO : Long
-) derives Encoder.AsObject, Decoder
-
 case class If (
     val `if` : Long
 ) derives Encoder.AsObject, Decoder
@@ -1056,6 +1051,8 @@ case class New (
 
 case class Obj4 (
     val dummy : Long,
+    val nil : Nil,
+    val NO : No,
     val noSuchMethod : NoSuchMethod,
     val noexcept : Noexcept,
     val nonatomic : Nonatomic,
@@ -1079,7 +1076,6 @@ case class Obj4 (
     val `protected` : Protected,
     val protocol : ProtocolClass,
     val `return` : Return,
-    val `sealed` : Sealed,
     val ObjectMapper : ObjectMapper,
     val of : Of,
     val oneway : Oneway,
@@ -1118,8 +1114,15 @@ case class Obj4 (
     val right : Right,
     val runtimeType : RuntimeType,
     val s : S,
-    val sbyte : Sbyte,
-    val SEL : Sel
+    val sbyte : Sbyte
+) derives Encoder.AsObject, Decoder
+
+case class Nil (
+    val nil : Long
+) derives Encoder.AsObject, Decoder
+
+case class No (
+    val NO : Long
 ) derives Encoder.AsObject, Decoder
 
 case class NoSuchMethod (
@@ -1214,10 +1217,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
@@ -1374,13 +1373,10 @@ case class Sbyte (
     val sbyte : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Sel (
-    val SEL : 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,
@@ -1392,6 +1388,7 @@ case class Obj5 (
     val PrimitiveKind : PrimitiveKind,
     val `true` : TrueClass,
     val `type` : TypeClass,
+    val SEL : Sel,
     val select : Select,
     val Self : Self,
     val Sendable : Sendable,
@@ -1441,10 +1438,7 @@ case class Obj5 (
     val unchecked : Unchecked,
     val undefined : Undefined,
     val union : Union,
-    val UnmarshalJSON : UnmarshalJSON,
-    val unowned : Unowned,
-    val unsafe : Unsafe,
-    val UseSerializers : UseSerializers
+    val UnmarshalJSON : UnmarshalJSON
 )
 
 object Obj5:
@@ -1461,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
@@ -1505,6 +1503,10 @@ 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
@@ -1723,25 +1725,16 @@ case class UnmarshalJSON (
     val UnmarshalJSON : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Unowned (
-    val unowned : Long
-) derives Encoder.AsObject, Decoder
-
-case class Unsafe (
-    val unsafe : Long
-) derives Encoder.AsObject, Decoder
-
-case class UseSerializers (
-    val UseSerializers : Long
-) derives Encoder.AsObject, Decoder
-
 case class Obj6 (
     val dummy : Long,
     val `var` : Var,
     val `while` : While,
     val `with` : With,
     val `yield` : Yield,
+    val unowned : Unowned,
+    val unsafe : Unsafe,
     val unsigned : Unsigned,
+    val UseSerializers : UseSerializers,
     val ushort : Ushort,
     val using : Using,
     val Utf8JsonReader : Utf8JSONReader,
@@ -1775,10 +1768,22 @@ case class Yield (
     val `yield` : Long
 ) derives Encoder.AsObject, Decoder
 
+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
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 88d02d5..0d324d9 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
@@ -807,6 +807,7 @@ case class Obj3 (
     val Locale : Locale,
     val lock : Lock,
     val long : LongClass,
+    val makeDictEncoder : MakeDictEncoder,
     val map : MapClass,
     val MapEntry : MapEntry,
     val MarshalJSON : MarshalJSON,
@@ -817,8 +818,6 @@ case class Obj3 (
     val namespace : Namespace,
     val native : Native,
     val newtonsoft : Newtonsoft,
-    val nil : Nil,
-    val NO : No,
     val `if` : If,
     val `implicit` : Implicit,
     val `import` : Import,
@@ -1019,6 +1018,10 @@ case class LongClass (
     val long : Long
 ) derives OptionPickler.ReadWriter
 
+case class MakeDictEncoder (
+    val makeDictEncoder : Long
+) derives OptionPickler.ReadWriter
+
 case class MapClass (
     val map : Long
 ) derives OptionPickler.ReadWriter
@@ -1059,14 +1062,6 @@ case class Newtonsoft (
     val newtonsoft : Long
 ) derives OptionPickler.ReadWriter
 
-case class Nil (
-    val nil : Long
-) derives OptionPickler.ReadWriter
-
-case class No (
-    val NO : Long
-) derives OptionPickler.ReadWriter
-
 case class If (
     val `if` : Long
 ) derives OptionPickler.ReadWriter
@@ -1089,6 +1084,8 @@ case class New (
 
 case class Obj4 (
     val dummy : Long,
+    val nil : Nil,
+    val NO : No,
     val noSuchMethod : NoSuchMethod,
     val noexcept : Noexcept,
     val nonatomic : Nonatomic,
@@ -1112,7 +1109,6 @@ case class Obj4 (
     val `protected` : Protected,
     val protocol : ProtocolClass,
     val `return` : Return,
-    val `sealed` : Sealed,
     val ObjectMapper : ObjectMapper,
     val of : Of,
     val oneway : Oneway,
@@ -1151,8 +1147,15 @@ case class Obj4 (
     val right : Right,
     val runtimeType : RuntimeType,
     val s : S,
-    val sbyte : Sbyte,
-    val SEL : Sel
+    val sbyte : Sbyte
+) derives OptionPickler.ReadWriter
+
+case class Nil (
+    val nil : Long
+) derives OptionPickler.ReadWriter
+
+case class No (
+    val NO : Long
 ) derives OptionPickler.ReadWriter
 
 case class NoSuchMethod (
@@ -1247,10 +1250,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
@@ -1407,13 +1406,10 @@ case class Sbyte (
     val sbyte : Long
 ) derives OptionPickler.ReadWriter
 
-case class Sel (
-    val SEL : 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,
@@ -1425,6 +1421,7 @@ case class Obj5 (
     val PrimitiveKind : PrimitiveKind,
     val `true` : TrueClass,
     val `type` : TypeClass,
+    val SEL : Sel,
     val select : Select,
     val Self : Self,
     val Sendable : Sendable,
@@ -1476,16 +1473,17 @@ case class Obj5 (
     val unchecked : Unchecked,
     val undefined : Undefined,
     val union : Union,
-    val UnmarshalJSON : UnmarshalJSON,
-    val unowned : Unowned,
-    val unsafe : Unsafe,
-    val UseSerializers : UseSerializers
+    val UnmarshalJSON : UnmarshalJSON
 ) 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
@@ -1530,6 +1528,10 @@ 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
@@ -1732,25 +1734,16 @@ case class UnmarshalJSON (
     val UnmarshalJSON : Long
 ) derives OptionPickler.ReadWriter
 
-case class Unowned (
-    val unowned : Long
-) derives OptionPickler.ReadWriter
-
-case class Unsafe (
-    val unsafe : Long
-) derives OptionPickler.ReadWriter
-
-case class UseSerializers (
-    val UseSerializers : Long
-) derives OptionPickler.ReadWriter
-
 case class Obj6 (
     val dummy : Long,
     val `var` : Var,
     val `while` : While,
     val `with` : With,
     val `yield` : Yield,
+    val unowned : Unowned,
+    val unsafe : Unsafe,
     val unsigned : Unsigned,
+    val UseSerializers : UseSerializers,
     val ushort : Ushort,
     val using : Using,
     val Utf8JsonReader : Utf8JSONReader,
@@ -1784,10 +1777,22 @@ case class Yield (
     val `yield` : Long
 ) derives OptionPickler.ReadWriter
 
+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
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 3f00f00..d8eecf2 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
@@ -188,6 +188,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         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;
+        else if (!strcmp(cJSON_GetStringValue(j), "makeDictEncoder")) x = ENUM_MAKE_DICT_ENCODER;
         else if (!strcmp(cJSON_GetStringValue(j), "map")) x = ENUM_MAP;
         else if (!strcmp(cJSON_GetStringValue(j), "MarshalJSON")) x = ENUM_MARSHAL_JSON;
         else if (!strcmp(cJSON_GetStringValue(j), "MapEntry")) x = ENUM_MAP_ENTRY;
@@ -538,6 +539,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_LOCALE: j = cJSON_CreateString("Locale"); break;
         case ENUM_LOCK: j = cJSON_CreateString("lock"); break;
         case ENUM_LONG: j = cJSON_CreateString("long"); break;
+        case ENUM_MAKE_DICT_ENCODER: j = cJSON_CreateString("makeDictEncoder"); break;
         case ENUM_MAP: j = cJSON_CreateString("map"); break;
         case ENUM_MARSHAL_JSON: j = cJSON_CreateString("MarshalJSON"); break;
         case ENUM_MAP_ENTRY: j = cJSON_CreateString("MapEntry"); 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 6a6a864..4ff3fd6 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
@@ -229,6 +229,7 @@ enum Enum {
     ENUM_LOCALE,
     ENUM_LOCK,
     ENUM_LONG,
+    ENUM_MAKE_DICT_ENCODER,
     ENUM_MAP,
     ENUM_MARSHAL_JSON,
     ENUM_MAP_ENTRY,
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 5b2cf7a..5e7fc71 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
@@ -5593,6 +5593,50 @@ void cJSON_DeleteUnionLock(struct UnionLock * x) {
     }
 }
 
+struct UnionMakeDictEncoder * cJSON_GetUnionMakeDictEncoderValue(const cJSON * j) {
+    struct UnionMakeDictEncoder * x = cJSON_malloc(sizeof(struct UnionMakeDictEncoder));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionMakeDictEncoder));
+        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.make_dict_encoder = cJSON_GetMakeDictEncoderValue(j);
+            if (NULL == x->value.make_dict_encoder) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionMakeDictEncoder * cJSON_ParseUnionMakeDictEncoder(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionMakeDictEncoder * x = j ? cJSON_GetUnionMakeDictEncoderValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionMakeDictEncoder(const struct UnionMakeDictEncoder * x) { cJSON * j = cJSON_CreateUnionMakeDictEncoder(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionMakeDictEncoder(const struct UnionMakeDictEncoder * 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_CreateMakeDictEncoder(x->value.make_dict_encoder);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionMakeDictEncoder(struct UnionMakeDictEncoder * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteMakeDictEncoder(x->value.make_dict_encoder);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionMap * cJSON_GetUnionMapValue(const cJSON * j) {
     struct UnionMap * x = cJSON_malloc(sizeof(struct UnionMap));
     if (NULL != x) {
@@ -21276,6 +21320,55 @@ void cJSON_DeleteLock(struct Lock * x) {
     }
 }
 
+struct MakeDictEncoder * cJSON_ParseMakeDictEncoder(const char * s) {
+    struct MakeDictEncoder * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetMakeDictEncoderValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct MakeDictEncoder * cJSON_GetMakeDictEncoderValue(const cJSON * j) {
+    struct MakeDictEncoder * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct MakeDictEncoder)))) {
+            memset(x, 0, sizeof(struct MakeDictEncoder));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateMakeDictEncoder(const struct MakeDictEncoder * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintMakeDictEncoder(const struct MakeDictEncoder * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateMakeDictEncoder(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteMakeDictEncoder(struct MakeDictEncoder * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Map * cJSON_ParseMap(const char * s) {
     struct Map * x = NULL;
     if (NULL != s) {
@@ -32739,6 +32832,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_long = cJSON_GetUnionLongValue(cJSON_GetObjectItemCaseSensitive(j, "long"));
                 if (NULL == x->top_level_long) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "makeDictEncoder")) {
+                if (!cJSON_IsUnionMakeDictEncoder(cJSON_GetObjectItemCaseSensitive(j, "makeDictEncoder"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->make_dict_encoder = cJSON_GetUnionMakeDictEncoderValue(cJSON_GetObjectItemCaseSensitive(j, "makeDictEncoder"));
+                if (NULL == x->make_dict_encoder) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "map")) {
                 if (!cJSON_IsUnionMap(cJSON_GetObjectItemCaseSensitive(j, "map"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->map = cJSON_GetUnionMapValue(cJSON_GetObjectItemCaseSensitive(j, "map"));
@@ -34099,6 +34197,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_long) {
                 cJSON_AddItemToObject(j, "long", cJSON_CreateUnionLong(x->top_level_long));
             }
+            if (NULL != x->make_dict_encoder) {
+                cJSON_AddItemToObject(j, "makeDictEncoder", cJSON_CreateUnionMakeDictEncoder(x->make_dict_encoder));
+            }
             if (NULL != x->map) {
                 cJSON_AddItemToObject(j, "map", cJSON_CreateUnionMap(x->map));
             }
@@ -35147,6 +35248,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_long) {
             cJSON_DeleteUnionLong(x->top_level_long);
         }
+        if (NULL != x->make_dict_encoder) {
+            cJSON_DeleteUnionMakeDictEncoder(x->make_dict_encoder);
+        }
         if (NULL != x->map) {
             cJSON_DeleteUnionMap(x->map);
         }
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 857773c..a628b24 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
@@ -1445,6 +1445,17 @@ struct UnionLock {
     } value;
 };
 
+struct MakeDictEncoder {
+};
+
+struct UnionMakeDictEncoder {
+    int type;
+    union {
+        double number;
+        struct MakeDictEncoder * make_dict_encoder;
+    } value;
+};
+
 struct Map {
 };
 
@@ -3993,6 +4004,7 @@ struct TopLevel {
     struct UnionLocale * locale;
     struct UnionLock * lock;
     struct UnionLong * top_level_long;
+    struct UnionMakeDictEncoder * make_dict_encoder;
     struct UnionMap * map;
     struct UnionMapEntry * map_entry;
     struct UnionMarshalJson * marshal_json;
@@ -5045,6 +5057,13 @@ void cJSON_DeleteUnionLock(struct UnionLock * x);
 struct UnionLock * cJSON_ParseUnionLock(const char * s);
 char * cJSON_PrintUnionLock(const struct UnionLock * x);
 
+#define cJSON_IsUnionMakeDictEncoder(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionMakeDictEncoder * cJSON_GetUnionMakeDictEncoderValue(const cJSON * j);
+cJSON * cJSON_CreateUnionMakeDictEncoder(const struct UnionMakeDictEncoder * x);
+void cJSON_DeleteUnionMakeDictEncoder(struct UnionMakeDictEncoder * x);
+struct UnionMakeDictEncoder * cJSON_ParseUnionMakeDictEncoder(const char * s);
+char * cJSON_PrintUnionMakeDictEncoder(const struct UnionMakeDictEncoder * x);
+
 #define cJSON_IsUnionMap(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionMap * cJSON_GetUnionMapValue(const cJSON * j);
 cJSON * cJSON_CreateUnionMap(const struct UnionMap * x);
@@ -7312,6 +7331,12 @@ cJSON * cJSON_CreateLock(const struct Lock * x);
 char * cJSON_PrintLock(const struct Lock * x);
 void cJSON_DeleteLock(struct Lock * x);
 
+struct MakeDictEncoder * cJSON_ParseMakeDictEncoder(const char * s);
+struct MakeDictEncoder * cJSON_GetMakeDictEncoderValue(const cJSON * j);
+cJSON * cJSON_CreateMakeDictEncoder(const struct MakeDictEncoder * x);
+char * cJSON_PrintMakeDictEncoder(const struct MakeDictEncoder * x);
+void cJSON_DeleteMakeDictEncoder(struct MakeDictEncoder * x);
+
 struct Map * cJSON_ParseMap(const char * s);
 struct Map * cJSON_GetMapValue(const cJSON * j);
 cJSON * cJSON_CreateMap(const struct Map * x);
diff --git a/base/schema-cplusplus/test/inputs/schema/keyword-enum.schema/default/quicktype.hpp b/head/schema-cplusplus/test/inputs/schema/keyword-enum.schema/default/quicktype.hpp
index 46f6f4c..433bd01 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_DICT, 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, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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_DICT, 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, MAKE_DICT_ENCODER, MAP, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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:
@@ -306,6 +306,7 @@ namespace quicktype {
             {"Locale", Enum::LOCALE},
             {"lock", Enum::LOCK},
             {"long", Enum::LONG},
+            {"makeDictEncoder", Enum::MAKE_DICT_ENCODER},
             {"map", Enum::MAP},
             {"MarshalJSON", Enum::MARSHAL_JSON},
             {"MapEntry", Enum::MAP_ENTRY},
@@ -659,6 +660,7 @@ namespace quicktype {
             case Enum::LOCALE: j = "Locale"; break;
             case Enum::LOCK: j = "lock"; break;
             case Enum::LONG: j = "long"; break;
+            case Enum::MAKE_DICT_ENCODER: j = "makeDictEncoder"; break;
             case Enum::MAP: j = "map"; break;
             case Enum::MARSHAL_JSON: j = "MarshalJSON"; break;
             case Enum::MAP_ENTRY: j = "MapEntry"; 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 6b2af6f..c4d53b3 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
@@ -1613,6 +1613,18 @@ namespace quicktype {
 
     using UnionLock = std::variant<Lock, double>;
 
+    class MakeDictEncoder {
+        public:
+        MakeDictEncoder() = default;
+        virtual ~MakeDictEncoder() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionMakeDictEncoder = std::variant<MakeDictEncoder, double>;
+
     class Map {
         public:
         Map() = default;
@@ -4381,6 +4393,7 @@ namespace quicktype {
         std::optional<UnionLocale> locale;
         std::optional<UnionLock> lock;
         std::optional<UnionLong> top_level_long;
+        std::optional<UnionMakeDictEncoder> make_dict_encoder;
         std::optional<UnionMap> map;
         std::optional<UnionMapEntry> map_entry;
         std::optional<UnionMarshalJson> marshal_json;
@@ -5272,6 +5285,10 @@ namespace quicktype {
         std::optional<UnionLong> & get_mutable_top_level_long() { return top_level_long; }
         void set_top_level_long(const std::optional<UnionLong> & value) { this->top_level_long = value; }
 
+        const std::optional<UnionMakeDictEncoder> & get_make_dict_encoder() const { return make_dict_encoder; }
+        std::optional<UnionMakeDictEncoder> & get_mutable_make_dict_encoder() { return make_dict_encoder; }
+        void set_make_dict_encoder(const std::optional<UnionMakeDictEncoder> & value) { this->make_dict_encoder = value; }
+
         const std::optional<UnionMap> & get_map() const { return map; }
         std::optional<UnionMap> & get_mutable_map() { return map; }
         void set_map(const std::optional<UnionMap> & value) { this->map = value; }
@@ -6300,6 +6317,9 @@ void to_json(json & j, const Locale & x);
 void from_json(const json & j, Lock & x);
 void to_json(json & j, const Lock & x);
 
+void from_json(const json & j, MakeDictEncoder & x);
+void to_json(json & j, const MakeDictEncoder & x);
+
 void from_json(const json & j, Map & x);
 void to_json(json & j, const Map & x);
 
@@ -7711,6 +7731,12 @@ struct adl_serializer<std::variant<quicktype::Lock, double>> {
     static void to_json(json & j, const std::variant<quicktype::Lock, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::MakeDictEncoder, double>> {
+    static void from_json(const json & j, std::variant<quicktype::MakeDictEncoder, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::MakeDictEncoder, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Map, double>> {
     static void from_json(const json & j, std::variant<quicktype::Map, double> & x);
@@ -10399,6 +10425,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, MakeDictEncoder& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const MakeDictEncoder & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Map& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -13130,6 +13167,8 @@ namespace quicktype {
         x.set_lock(get_stack_optional<std::variant<Lock, double>>(j, "lock"));
         if (j.find("long") != j.end() && j.at("long").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_long(get_stack_optional<std::variant<Long, double>>(j, "long"));
+        if (j.find("makeDictEncoder") != j.end() && j.at("makeDictEncoder").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_make_dict_encoder(get_stack_optional<std::variant<MakeDictEncoder, double>>(j, "makeDictEncoder"));
         if (j.find("map") != j.end() && j.at("map").is_null()) throw std::runtime_error("Unexpected null");
         x.set_map(get_stack_optional<std::variant<Map, double>>(j, "map"));
         if (j.find("MapEntry") != j.end() && j.at("MapEntry").is_null()) throw std::runtime_error("Unexpected null");
@@ -13638,6 +13677,7 @@ namespace quicktype {
         j["Locale"] = x.get_locale();
         j["lock"] = x.get_lock();
         j["long"] = x.get_top_level_long();
+        j["makeDictEncoder"] = x.get_make_dict_encoder();
         j["map"] = x.get_map();
         j["MapEntry"] = x.get_map_entry();
         j["MarshalJSON"] = x.get_marshal_json();
@@ -16342,6 +16382,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::MakeDictEncoder, double>>::from_json(const json & j, std::variant<quicktype::MakeDictEncoder, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::MakeDictEncoder>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::MakeDictEncoder, double>>::to_json(json & j, const std::variant<quicktype::MakeDictEncoder, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::MakeDictEncoder>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
     inline void adl_serializer<std::variant<quicktype::Map, double>>::from_json(const json & j, std::variant<quicktype::Map, double> & x) {
         if (j.is_number())
             x = j.get<double>();
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 3ff1e0c..d34034b 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
@@ -428,6 +428,9 @@ class TopLevel
 
   property long : UnionLong?
 
+  @[JSON::Field(key: "makeDictEncoder")]
+  property make_dict_encoder : UnionMakeDictEncoder?
+
   property map : UnionMap?
 
   @[JSON::Field(key: "MapEntry")]
@@ -1625,6 +1628,11 @@ class Long
 
 end
 
+class MakeDictEncoder
+  include JSON::Serializable
+
+end
+
 class Map
   include JSON::Serializable
 
@@ -2849,6 +2857,8 @@ alias UnionLock = Float64 | Lock
 
 alias UnionLong = Float64 | Long
 
+alias UnionMakeDictEncoder = Float64 | MakeDictEncoder
+
 alias UnionMap = Float64 | Map
 
 alias UnionMapEntry = Float64 | MapEntry
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 a6ab54c..114ce97 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, FromDict, 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, MarshalJson, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJson, 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, FromDict, 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, MakeDictEncoder, Map, MarshalJson, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJson, 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
     {
@@ -425,6 +425,8 @@ namespace QuickType
                     return Enum.Lock;
                 case "long":
                     return Enum.Long;
+                case "makeDictEncoder":
+                    return Enum.MakeDictEncoder;
                 case "map":
                     return Enum.Map;
                 case "MarshalJSON":
@@ -1305,6 +1307,9 @@ namespace QuickType
                 case Enum.Long:
                     serializer.Serialize(writer, "long");
                     return;
+                case Enum.MakeDictEncoder:
+                    serializer.Serialize(writer, "makeDictEncoder");
+                    return;
                 case Enum.Map:
                     serializer.Serialize(writer, "map");
                     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 f0d6542..983e39c 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
@@ -571,6 +571,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLong? Long { get; set; }
 
+        [JsonProperty("makeDictEncoder", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionMakeDictEncoder? MakeDictEncoder { get; set; }
+
         [JsonProperty("map", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionMap? Map { get; set; }
 
@@ -1755,6 +1758,10 @@ namespace QuickType
     {
     }
 
+    public partial class MakeDictEncoder
+    {
+    }
+
     public partial class Map
     {
     }
@@ -3998,6 +4005,15 @@ namespace QuickType
         public static implicit operator UnionLong(Long Long) => new UnionLong { Long = Long };
     }
 
+    public partial struct UnionMakeDictEncoder
+    {
+        public double? Double;
+        public MakeDictEncoder? MakeDictEncoder;
+
+        public static implicit operator UnionMakeDictEncoder(double Double) => new UnionMakeDictEncoder { Double = Double };
+        public static implicit operator UnionMakeDictEncoder(MakeDictEncoder MakeDictEncoder) => new UnionMakeDictEncoder { MakeDictEncoder = MakeDictEncoder };
+    }
+
     public partial struct UnionMap
     {
         public double? Double;
@@ -5734,6 +5750,7 @@ namespace QuickType
                 UnionListConverter.Singleton,
                 UnionLockConverter.Singleton,
                 UnionLongConverter.Singleton,
+                UnionMakeDictEncoderConverter.Singleton,
                 UnionMapConverter.Singleton,
                 UnionMetadataPropertyHandlingConverter.Singleton,
                 UnionModuleConverter.Singleton,
@@ -14036,6 +14053,44 @@ namespace QuickType
         public static readonly UnionLongConverter Singleton = new UnionLongConverter();
     }
 
+    internal class UnionMakeDictEncoderConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionMakeDictEncoder) || t == typeof(UnionMakeDictEncoder?);
+
+        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 UnionMakeDictEncoder { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<MakeDictEncoder>(reader);
+                    return new UnionMakeDictEncoder { MakeDictEncoder = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionMakeDictEncoder");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionMakeDictEncoder)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.MakeDictEncoder != null)
+            {
+                serializer.Serialize(writer, value.MakeDictEncoder);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionMakeDictEncoder");
+        }
+
+        public static readonly UnionMakeDictEncoderConverter Singleton = new UnionMakeDictEncoderConverter();
+    }
+
     internal class UnionMapConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionMap) || t == typeof(UnionMap?);
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 099fad3..02fc4ef 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, FromDict, 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, MarshalJson, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJson, 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, FromDict, 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, MakeDictEncoder, Map, MarshalJson, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJson, 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
     {
@@ -422,6 +422,8 @@ namespace QuickType
                     return Enum.Lock;
                 case "long":
                     return Enum.Long;
+                case "makeDictEncoder":
+                    return Enum.MakeDictEncoder;
                 case "map":
                     return Enum.Map;
                 case "MarshalJSON":
@@ -1296,6 +1298,9 @@ namespace QuickType
                 case Enum.Long:
                     JsonSerializer.Serialize(writer, "long", options);
                     return;
+                case Enum.MakeDictEncoder:
+                    JsonSerializer.Serialize(writer, "makeDictEncoder", options);
+                    return;
                 case Enum.Map:
                     JsonSerializer.Serialize(writer, "map", 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 46631d8..d5393cc 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
@@ -750,6 +750,10 @@ namespace QuickType
         [JsonPropertyName("long")]
         public UnionLong? Long { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("makeDictEncoder")]
+        public UnionMakeDictEncoder? MakeDictEncoder { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("map")]
         public UnionMap? Map { get; set; }
@@ -2095,6 +2099,10 @@ namespace QuickType
     {
     }
 
+    public partial class MakeDictEncoder
+    {
+    }
+
     public partial class Map
     {
     }
@@ -4338,6 +4346,15 @@ namespace QuickType
         public static implicit operator UnionLong(Long Long) => new UnionLong { Long = Long };
     }
 
+    public partial struct UnionMakeDictEncoder
+    {
+        public double? Double;
+        public MakeDictEncoder? MakeDictEncoder;
+
+        public static implicit operator UnionMakeDictEncoder(double Double) => new UnionMakeDictEncoder { Double = Double };
+        public static implicit operator UnionMakeDictEncoder(MakeDictEncoder MakeDictEncoder) => new UnionMakeDictEncoder { MakeDictEncoder = MakeDictEncoder };
+    }
+
     public partial struct UnionMap
     {
         public double? Double;
@@ -6072,6 +6089,7 @@ namespace QuickType
                 UnionListConverter.Singleton,
                 UnionLockConverter.Singleton,
                 UnionLongConverter.Singleton,
+                UnionMakeDictEncoderConverter.Singleton,
                 UnionMapConverter.Singleton,
                 UnionMetadataPropertyHandlingConverter.Singleton,
                 UnionModuleConverter.Singleton,
@@ -13946,6 +13964,42 @@ namespace QuickType
         public static readonly UnionLongConverter Singleton = new UnionLongConverter();
     }
 
+    internal class UnionMakeDictEncoderConverter : JsonConverter<UnionMakeDictEncoder>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionMakeDictEncoder);
+
+        public override UnionMakeDictEncoder Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionMakeDictEncoder { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<MakeDictEncoder>(ref reader, options);
+                    return new UnionMakeDictEncoder { MakeDictEncoder = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionMakeDictEncoder");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionMakeDictEncoder value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.MakeDictEncoder != null)
+            {
+                JsonSerializer.Serialize(writer, value.MakeDictEncoder, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionMakeDictEncoder");
+        }
+
+        public static readonly UnionMakeDictEncoderConverter Singleton = new UnionMakeDictEncoderConverter();
+    }
+
     internal class UnionMapConverter : JsonConverter<UnionMap>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionMap);
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 fa3397e..49107d2 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, FromDict, 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, MarshalJson, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJson, 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, FromDict, 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, MakeDictEncoder, Map, MarshalJson, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJson, 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
     {
@@ -425,6 +425,8 @@ namespace QuickType
                     return Enum.Lock;
                 case "long":
                     return Enum.Long;
+                case "makeDictEncoder":
+                    return Enum.MakeDictEncoder;
                 case "map":
                     return Enum.Map;
                 case "MarshalJSON":
@@ -1305,6 +1307,9 @@ namespace QuickType
                 case Enum.Long:
                     serializer.Serialize(writer, "long");
                     return;
+                case Enum.MakeDictEncoder:
+                    serializer.Serialize(writer, "makeDictEncoder");
+                    return;
                 case Enum.Map:
                     serializer.Serialize(writer, "map");
                     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 6bd4798..683201a 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
@@ -571,6 +571,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLong? Long { get; set; }
 
+        [JsonProperty("makeDictEncoder", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionMakeDictEncoder? MakeDictEncoder { get; set; }
+
         [JsonProperty("map", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionMap? Map { get; set; }
 
@@ -1747,6 +1750,10 @@ namespace QuickType
     {
     }
 
+    public partial record MakeDictEncoder
+    {
+    }
+
     public partial record Map
     {
     }
@@ -3980,6 +3987,15 @@ namespace QuickType
         public static implicit operator UnionLong(Long Long) => new UnionLong { Long = Long };
     }
 
+    public partial struct UnionMakeDictEncoder
+    {
+        public double? Double;
+        public MakeDictEncoder? MakeDictEncoder;
+
+        public static implicit operator UnionMakeDictEncoder(double Double) => new UnionMakeDictEncoder { Double = Double };
+        public static implicit operator UnionMakeDictEncoder(MakeDictEncoder MakeDictEncoder) => new UnionMakeDictEncoder { MakeDictEncoder = MakeDictEncoder };
+    }
+
     public partial struct UnionMap
     {
         public double? Double;
@@ -5734,6 +5750,7 @@ namespace QuickType
                 UnionListConverter.Singleton,
                 UnionLockConverter.Singleton,
                 UnionLongConverter.Singleton,
+                UnionMakeDictEncoderConverter.Singleton,
                 UnionMapConverter.Singleton,
                 UnionMetadataPropertyHandlingConverter.Singleton,
                 UnionModuleConverter.Singleton,
@@ -14036,6 +14053,44 @@ namespace QuickType
         public static readonly UnionLongConverter Singleton = new UnionLongConverter();
     }
 
+    internal class UnionMakeDictEncoderConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionMakeDictEncoder) || t == typeof(UnionMakeDictEncoder?);
+
+        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 UnionMakeDictEncoder { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<MakeDictEncoder>(reader);
+                    return new UnionMakeDictEncoder { MakeDictEncoder = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionMakeDictEncoder");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionMakeDictEncoder)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.MakeDictEncoder != null)
+            {
+                serializer.Serialize(writer, value.MakeDictEncoder);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionMakeDictEncoder");
+        }
+
+        public static readonly UnionMakeDictEncoderConverter Singleton = new UnionMakeDictEncoderConverter();
+    }
+
     internal class UnionMapConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionMap) || t == typeof(UnionMap?);
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 f8649a4..6777757 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
@@ -205,6 +205,7 @@ enum Enum {
     LOCALE,
     LOCK,
     LONG,
+    MAKE_DICT_ENCODER,
     MAP,
     MARSHAL_JSON,
     MAP_ENTRY,
@@ -551,6 +552,7 @@ final enumValues = EnumValues({
     "Locale": Enum.LOCALE,
     "lock": Enum.LOCK,
     "long": Enum.LONG,
+    "makeDictEncoder": Enum.MAKE_DICT_ENCODER,
     "map": Enum.MAP,
     "MarshalJSON": Enum.MARSHAL_JSON,
     "MapEntry": Enum.MAP_ENTRY,
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 1ba1d25..5d627f5 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
@@ -191,6 +191,7 @@ class TopLevel {
     final dynamic locale;
     final dynamic lock;
     final dynamic long;
+    final dynamic makeDictEncoder;
     final dynamic map;
     final dynamic mapEntry;
     final dynamic marshalJson;
@@ -536,6 +537,7 @@ class TopLevel {
         this.locale,
         this.lock,
         this.long,
+        this.makeDictEncoder,
         this.map,
         this.mapEntry,
         this.marshalJson,
@@ -882,6 +884,7 @@ class TopLevel {
         locale: json["Locale"],
         lock: json["lock"],
         long: json["long"],
+        makeDictEncoder: json["makeDictEncoder"],
         map: json["map"],
         mapEntry: json["MapEntry"],
         marshalJson: json["MarshalJSON"],
@@ -1228,6 +1231,7 @@ class TopLevel {
         "Locale": locale,
         "lock": lock,
         "long": long,
+        "makeDictEncoder": makeDictEncoder,
         "map": map,
         "MapEntry": mapEntry,
         "MarshalJSON": marshalJson,
@@ -2822,6 +2826,16 @@ class Long {
     };
 }
 
+class MakeDictEncoder {
+    MakeDictEncoder();
+
+    factory MakeDictEncoder.fromJson(Map<String, dynamic> json) => MakeDictEncoder(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class MapClass {
     MapClass();
 
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 7edf71c..3e5594d 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
@@ -187,6 +187,7 @@ defmodule EnumEnum do
     :Locale,
     :lock,
     :long,
+    :makeDictEncoder,
     :map,
     :MarshalJSON,
     :MapEntry,
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 9b072f4..69d7e46 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
@@ -4935,6 +4935,35 @@ defmodule Long do
   end
 end
 
+defmodule MakeDictEncoder do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %MakeDictEncoder{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule MapClass do
   defstruct []
 
@@ -9924,7 +9953,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_dict, :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, :marshal_json, :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_dict, :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, :unmarshal_json, :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_dict, :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, :make_dict_encoder, :map, :map_entry, :marshal_json, :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_dict, :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, :unmarshal_json, :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,
@@ -10109,6 +10138,7 @@ defmodule TopLevel do
           locale: Locale.t() | float() | nil,
           lock: Lock.t() | float() | nil,
           long: Long.t() | float() | nil,
+          make_dict_encoder: MakeDictEncoder.t() | float() | nil,
           map: MapClass.t() | float() | nil,
           map_entry: MapEntry.t() | float() | nil,
           marshal_json: MarshalJSON.t() | float() | nil,
@@ -12452,6 +12482,18 @@ defmodule TopLevel do
   def encode_long(value) when is_nil(value), do: value
   def encode_long(_), do: {:error, "Unexpected type when encoding TopLevel.long"}
 
+  def decode_make_dict_encoder(%{} = value), do: MakeDictEncoder.from_map(value)
+  def decode_make_dict_encoder(value) when is_float(value), do: value
+  def decode_make_dict_encoder(value) when is_integer(value), do: value
+  def decode_make_dict_encoder(value) when is_nil(value), do: value
+  def decode_make_dict_encoder(_), do: {:error, "Unexpected type when decoding TopLevel.make_dict_encoder"}
+
+  def encode_make_dict_encoder(%MakeDictEncoder{} = value), do: MakeDictEncoder.to_map(value)
+  def encode_make_dict_encoder(value) when is_float(value), do: value
+  def encode_make_dict_encoder(value) when is_integer(value), do: value
+  def encode_make_dict_encoder(value) when is_nil(value), do: value
+  def encode_make_dict_encoder(_), do: {:error, "Unexpected type when encoding TopLevel.make_dict_encoder"}
+
   def decode_map(%{} = value), do: MapClass.from_map(value)
   def decode_map(value) when is_float(value), do: value
   def decode_map(value) when is_integer(value), do: value
@@ -14568,6 +14610,7 @@ defmodule TopLevel do
       locale: decode_locale(m["Locale"]),
       lock: decode_lock(m["lock"]),
       long: decode_long(m["long"]),
+      make_dict_encoder: decode_make_dict_encoder(m["makeDictEncoder"]),
       map: decode_map(m["map"]),
       map_entry: decode_map_entry(m["MapEntry"]),
       marshal_json: decode_marshal_json(m["MarshalJSON"]),
@@ -14922,6 +14965,7 @@ defmodule TopLevel do
       "Locale" => encode_locale(struct.locale),
       "lock" => encode_lock(struct.lock),
       "long" => encode_long(struct.long),
+      "makeDictEncoder" => encode_make_dict_encoder(struct.make_dict_encoder),
       "map" => encode_map(struct.map),
       "MapEntry" => encode_map_entry(struct.map_entry),
       "MarshalJSON" => encode_marshal_json(struct.marshal_json),
diff --git a/base/schema-elm/test/inputs/schema/any.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/any.schema/default/QuickType.elm
index 3f06795..5bc2880 100644
--- a/base/schema-elm/test/inputs/schema/any.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/any.schema/default/QuickType.elm
@@ -48,11 +48,19 @@ encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
         [ ("foo", identity x.foo)
-        , ("values", Jenc.dict identity identity x.values)
+        , ("values", makeDictEncoder identity identity x.values)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/schema-elm/test/inputs/schema/class-map-union.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/class-map-union.schema/default/QuickType.elm
index a4df8a7..6bccbcd 100644
--- a/base/schema-elm/test/inputs/schema/class-map-union.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/class-map-union.schema/default/QuickType.elm
@@ -57,7 +57,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("union", makeNullableEncoder (Jenc.dict identity encodeUnionValue) x.union)
+        [ ("union", makeNullableEncoder (makeDictEncoder identity encodeUnionValue) x.union)
         ]
 
 unionValue : Jdec.Decoder UnionValue
@@ -89,6 +89,14 @@ encodeUnionClass x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/schema-elm/test/inputs/schema/class-with-additional.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/class-with-additional.schema/default/QuickType.elm
index 43a6887..bedfb02 100644
--- a/base/schema-elm/test/inputs/schema/class-with-additional.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/class-with-additional.schema/default/QuickType.elm
@@ -50,7 +50,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("map", makeNullableEncoder (Jenc.dict identity encodeMap) x.map)
+        [ ("map", makeNullableEncoder (makeDictEncoder identity encodeMap) x.map)
         ]
 
 map : Jdec.Decoder Map
@@ -67,6 +67,14 @@ encodeMap x = case x of
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm
index b8f0f54..9a4c1bc 100644
--- a/base/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm
@@ -61,7 +61,7 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("stuff", Jenc.dict identity encodeThing x.stuff)
+        [ ("stuff", makeDictEncoder identity encodeThing x.stuff)
         ]
 
 thing : Jdec.Decoder Thing
@@ -97,10 +97,18 @@ encodeAnything x = case x of
     NullInAnything -> Jenc.null
     StringInAnything y -> Jenc.string y
     DoubleInAnything y -> Jenc.float y
-    AnythingMapInAnything y -> Jenc.dict identity identity y
+    AnythingMapInAnything y -> makeDictEncoder identity identity y
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/schema-elm/test/inputs/schema/empty-object.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/empty-object.schema/default/QuickType.elm
index e1250b9..d90e676 100644
--- a/base/schema-elm/test/inputs/schema/empty-object.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/empty-object.schema/default/QuickType.elm
@@ -36,10 +36,18 @@ quickType : Jdec.Decoder QuickType
 quickType = Jdec.dict Jdec.value
 
 quickTypeToString : QuickType -> String
-quickTypeToString r = Jenc.encode 0 (Jenc.dict identity identity r)
+quickTypeToString r = Jenc.encode 0 (makeDictEncoder identity identity r)
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/schema-elm/test/inputs/schema/go-schema-pattern-properties.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/go-schema-pattern-properties.schema/default/QuickType.elm
index dd84bf9..1fb6989 100644
--- a/base/schema-elm/test/inputs/schema/go-schema-pattern-properties.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/go-schema-pattern-properties.schema/default/QuickType.elm
@@ -45,11 +45,19 @@ quickType =
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("map", Jenc.dict identity Jenc.int x.map)
+        [ ("map", makeDictEncoder identity Jenc.int x.map)
         ]
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
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 3edab40..ef5409b 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
@@ -208,6 +208,7 @@ type EnumEnum
     | Locale
     | Lock
     | Long
+    | MakeDictEncoder
     | Map
     | MarshalJSON
     | MapEntry
@@ -579,6 +580,7 @@ enumEnum =
                 "Locale" -> Jdec.succeed Locale
                 "lock" -> Jdec.succeed Lock
                 "long" -> Jdec.succeed Long
+                "makeDictEncoder" -> Jdec.succeed MakeDictEncoder
                 "map" -> Jdec.succeed Map
                 "MarshalJSON" -> Jdec.succeed MarshalJSON
                 "MapEntry" -> Jdec.succeed MapEntry
@@ -927,6 +929,7 @@ encodeEnumEnum x = case x of
     Locale -> Jenc.string "Locale"
     Lock -> Jenc.string "lock"
     Long -> Jenc.string "long"
+    MakeDictEncoder -> Jenc.string "makeDictEncoder"
     Map -> Jenc.string "map"
     MarshalJSON -> Jenc.string "MarshalJSON"
     MapEntry -> Jenc.string "MapEntry"
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 cd38620..f4cfb5b 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
@@ -178,6 +178,7 @@ module QuickType exposing
     , Locale
     , Lock
     , Long
+    , MakeDictEncoder
     , Map
     , MapEntry
     , MarshalJSON
@@ -520,6 +521,7 @@ module QuickType exposing
     , UnionLocale(..)
     , UnionLock(..)
     , UnionLong(..)
+    , UnionMakeDictEncoder(..)
     , UnionMap(..)
     , UnionMapEntry(..)
     , UnionMarshalJSON(..)
@@ -889,6 +891,7 @@ type alias QuickType =
     , locale : Maybe UnionLocale
     , lock : Maybe UnionLock
     , long : Maybe UnionLong
+    , makeDictEncoder : Maybe UnionMakeDictEncoder
     , map : Maybe UnionMap
     , mapEntry : Maybe UnionMapEntry
     , marshalJSON : Maybe UnionMarshalJSON
@@ -2356,6 +2359,14 @@ type alias Long =
     {
     }
 
+type UnionMakeDictEncoder
+    = DoubleInUnionMakeDictEncoder Float
+    | MakeDictEncoderInUnionMakeDictEncoder MakeDictEncoder
+
+type alias MakeDictEncoder =
+    {
+    }
+
 type UnionMap
     = DoubleInUnionMap Float
     | MapInUnionMap Map
@@ -3984,6 +3995,7 @@ quickType =
         |> Jpipe.custom (optionalField "Locale" (Jdec.map Just unionLocale) Nothing)
         |> Jpipe.custom (optionalField "lock" (Jdec.map Just unionLock) Nothing)
         |> Jpipe.custom (optionalField "long" (Jdec.map Just unionLong) Nothing)
+        |> Jpipe.custom (optionalField "makeDictEncoder" (Jdec.map Just unionMakeDictEncoder) Nothing)
         |> Jpipe.custom (optionalField "map" (Jdec.map Just unionMap) Nothing)
         |> Jpipe.custom (optionalField "MapEntry" (Jdec.map Just unionMapEntry) Nothing)
         |> Jpipe.custom (optionalField "MarshalJSON" (Jdec.map Just unionMarshalJSON) Nothing)
@@ -4331,6 +4343,7 @@ encodeQuickType x =
         , ("Locale", makeNullableEncoder encodeUnionLocale x.locale)
         , ("lock", makeNullableEncoder encodeUnionLock x.lock)
         , ("long", makeNullableEncoder encodeUnionLong x.long)
+        , ("makeDictEncoder", makeNullableEncoder encodeUnionMakeDictEncoder x.makeDictEncoder)
         , ("map", makeNullableEncoder encodeUnionMap x.map)
         , ("MapEntry", makeNullableEncoder encodeUnionMapEntry x.mapEntry)
         , ("MarshalJSON", makeNullableEncoder encodeUnionMarshalJSON x.marshalJSON)
@@ -8080,6 +8093,28 @@ encodeLong x =
         [
         ]
 
+unionMakeDictEncoder : Jdec.Decoder UnionMakeDictEncoder
+unionMakeDictEncoder =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionMakeDictEncoder Jdec.float
+        , Jdec.map MakeDictEncoderInUnionMakeDictEncoder makeDictEncoder
+        ]
+
+encodeUnionMakeDictEncoder : UnionMakeDictEncoder -> Jenc.Value
+encodeUnionMakeDictEncoder x = case x of
+    DoubleInUnionMakeDictEncoder y -> Jenc.float y
+    MakeDictEncoderInUnionMakeDictEncoder y -> encodeMakeDictEncoder y
+
+makeDictEncoder : Jdec.Decoder MakeDictEncoder
+makeDictEncoder =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> MakeDictEncoder)
+
+encodeMakeDictEncoder : MakeDictEncoder -> Jenc.Value
+encodeMakeDictEncoder x =
+    Jenc.object
+        [
+        ]
+
 unionMap : Jdec.Decoder UnionMap
 unionMap =
     Jdec.oneOf
diff --git a/base/schema-elm/test/inputs/schema/unevaluated-properties.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/unevaluated-properties.schema/default/QuickType.elm
index b34a1be..a9d0187 100644
--- a/base/schema-elm/test/inputs/schema/unevaluated-properties.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/unevaluated-properties.schema/default/QuickType.elm
@@ -88,7 +88,7 @@ encodeConfig x =
     Jenc.object
         [ ("closed", makeNullableEncoder encodeClosed x.closed)
         , ("name", makeNullableEncoder Jenc.string x.name)
-        , ("settings", makeNullableEncoder (Jenc.dict identity (Jenc.list encodeItem)) x.settings)
+        , ("settings", makeNullableEncoder (makeDictEncoder identity (Jenc.list encodeItem)) x.settings)
         ]
 
 closed : Jdec.Decoder Closed
@@ -138,6 +138,14 @@ encodeItem x =
 
 --- encoder helpers
 
+makeDictEncoder : (String -> String) -> (a -> Jenc.Value) -> Dict String a -> Jenc.Value
+makeDictEncoder f m r =
+    r
+        |> Dict.toList
+        |> List.map (\( x, y ) -> Jenc.encode 0 (Jenc.string (f x)) ++ ":" ++ Jenc.encode 0 (m y))
+        |> String.join ","
+        |> (\str -> Jdec.decodeString Jdec.value ("{" ++ str ++ "}") |> Result.withDefault Jenc.null)
+
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
 makeNullableEncoder f m =
     case m of
diff --git a/base/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js
index 782c410..a5164dd 100644
--- a/base/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/accessors.schema/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
index 30facbe..5da9167 100644
--- a/base/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js
index 9b41bf2..7998331 100644
--- a/base/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/any.schema/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js
index de3bb1e..eef97f8 100644
--- a/base/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/bool-string.schema/default/TopLevel.js
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
index 0ab5f8f..b178219 100644
--- a/base/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js
index e050014..a08a6ca 100644
--- a/base/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/camelCase.schema/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js
index f8747ce..4cb3b4a 100644
--- a/base/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/class-map-union.schema/default/TopLevel.js
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
index 319b5d0..7987a08 100644
--- a/base/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.js b/head/schema-flow/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.js
index 280a121..5874b2e 100644
--- a/base/schema-flow/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
index 03492d1..3b225fc 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
index 7267743..1b6ba99 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
index 3883ea0..57036a2 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js
index a6c6ee5..6de87d7 100644
--- a/base/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/comment-injection.schema/default/TopLevel.js
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js
index bfdefce..729be21 100644
--- a/base/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/const-non-string.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js
index 461857e..6544d2d 100644
--- a/base/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/constructor.schema/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js
index fd3804b..7c4a34e 100644
--- a/base/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/cut-enum.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
index 159b882..5f936fb 100644
--- a/base/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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..2c0853a 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
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js
index 9529bb0..05ca456 100644
--- a/base/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/default-value.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
index 460c470..dd88f13 100644
--- a/base/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js
index 8a80a17..96fb2bb 100644
--- a/base/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/description.schema/default/TopLevel.js
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -157,7 +157,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
index 953338d..230fa76 100644
--- a/base/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js
index 3b57852..4c905fd 100644
--- a/base/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/empty-object.schema/default/TopLevel.js
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js
index da2bc16..d5cbc15 100644
--- a/base/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum-large.schema/default/TopLevel.js
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
index 6d8d098..5a829ad 100644
--- a/base/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
index b984eb2..9f9027a 100644
--- a/base/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js
index 6fe5b6c..f891810 100644
--- a/base/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/enum.schema/default/TopLevel.js
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
index 022ded2..4ee22ce 100644
--- a/base/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
index 35ad8a1..109b999 100644
--- a/base/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
index 4142df5..e279ded 100644
--- a/base/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js
index 94dd602..67f936a 100644
--- a/base/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/id-no-address.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js
index 0da7b3c..5fc0b1b 100644
--- a/base/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/id-root.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
index 282e724..a3d1c8c 100644
--- a/base/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
index 3e5b1af..5142321 100644
--- a/base/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
index 7c09067..675022a 100644
--- a/base/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
index 028af63..ce7c5c9 100644
--- a/base/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
index c7d038a..7a0af2d 100644
--- a/base/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
index c434c99..4d848c3 100644
--- a/base/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js
index ef28a5e..1466db9 100644
--- a/base/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-string.schema/default/TopLevel.js
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js
index 51b83f3..fe20f84 100644
--- a/base/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/integer-type.schema/default/TopLevel.js
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
index 58885fc..41e39c5 100644
--- a/base/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js
index 7ff9370..385add2 100644
--- a/base/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/intersection.schema/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
index 57ef2c0..a894724 100644
--- a/base/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 88b4607..61ff1d6 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
@@ -195,6 +195,7 @@ export type Enum =
     | "Locale"
     | "lock"
     | "long"
+    | "makeDictEncoder"
     | "map"
     | "MarshalJSON"
     | "MapEntry"
@@ -453,7 +454,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -464,7 +465,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -728,6 +729,7 @@ const typeMap: any = {
         "Locale",
         "lock",
         "long",
+        "makeDictEncoder",
         "map",
         "MarshalJSON",
         "MapEntry",
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 8a348cd..20d55a9 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
@@ -192,6 +192,7 @@ export type TopLevel = {
     Locale?:                     UnionLocale;
     lock?:                       UnionLock;
     long?:                       UnionLong;
+    makeDictEncoder?:            UnionMakeDictEncoder;
     map?:                        UnionMap;
     MapEntry?:                   UnionMapEntry;
     MarshalJSON?:                UnionMarshalJSON;
@@ -1431,6 +1432,11 @@ export type UnionLong = Long | number;
 export type Long = {
 };
 
+export type UnionMakeDictEncoder = MakeDictEncoder | number;
+
+export type MakeDictEncoder = {
+};
+
 export type UnionMap = Map | number;
 
 export type Map = {
@@ -2160,7 +2166,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -2171,7 +2177,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -2434,6 +2440,7 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: u(undefined, u(r("Locale"), 3.14)) },
         { json: "lock", js: "lock", typ: u(undefined, u(r("Lock"), 3.14)) },
         { json: "long", js: "long", typ: u(undefined, u(r("Long"), 3.14)) },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: u(undefined, u(r("MakeDictEncoder"), 3.14)) },
         { json: "map", js: "map", typ: u(undefined, u(r("Map"), 3.14)) },
         { json: "MapEntry", js: "MapEntry", typ: u(undefined, u(r("MapEntry"), 3.14)) },
         { json: "MarshalJSON", js: "MarshalJSON", typ: u(undefined, u(r("MarshalJSON"), 3.14)) },
@@ -3026,6 +3033,8 @@ const typeMap: any = {
     ], false),
     "Long": o([
     ], false),
+    "MakeDictEncoder": o([
+    ], false),
     "Map": o([
     ], false),
     "MetadataPropertyHandling": o([
diff --git a/base/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js
index 87eb58e..a9f72b4 100644
--- a/base/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/light.schema/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js
index 17c0e10..b6fd5dc 100644
--- a/base/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/list.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js
index 669266c..d76e536 100644
--- a/base/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/min-max-items.schema/default/TopLevel.js
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
index 60be51d..f9bfe28 100644
--- a/base/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js
index d58225c..544f02e 100644
--- a/base/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/minmax.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
index bd4537b..f6ce594 100644
--- a/base/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
index 61a8238..dcac16a 100644
--- a/base/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
index cbf3645..cd37458 100644
--- a/base/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
index 11caa97..9944441 100644
--- a/base/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
index 63ee252..7c3fec8 100644
--- a/base/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
index b682aea..267dd99 100644
--- a/base/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js
index 695aabc..ed1bd94 100644
--- a/base/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/object-type-required.schema/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js
index e3ef54d..69b48fe 100644
--- a/base/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-any.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
index c6e94b4..334c735 100644
--- a/base/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
index 3afc5fb..8c3fb18 100644
--- a/base/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
index 5c5a63e..c5b4f92 100644
--- a/base/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js
index 5708ba1..75acb19 100644
--- a/base/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-enum.schema/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js
index 9e8c173..c4e3d71 100644
--- a/base/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/optional-property.schema/default/TopLevel.js
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js
index 7259f33..ba6097d 100644
--- a/base/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/pattern.schema/default/TopLevel.js
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js
index 8139ed9..9fcf003 100644
--- a/base/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/postman-collection.schema/default/TopLevel.js
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js
index de153a7..73e6a33 100644
--- a/base/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/prefix-items.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
index b1766ee..566c3d1 100644
--- a/base/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
index fd3804b..7c4a34e 100644
--- a/base/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js
index 17c0e10..b6fd5dc 100644
--- a/base/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/ref-remote.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
index bfa4e9f..b950512 100644
--- a/base/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
@@ -210,7 +210,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -221,7 +221,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js
index d35b9e7..5753eef 100644
--- a/base/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/required-draft3.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
index 99c86ad..26a7fbe 100644
--- a/base/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js
index d35b9e7..5753eef 100644
--- a/base/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/required.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
index 9868a9b..52051ec 100644
--- a/base/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
index 2f38303..914ccc6 100644
--- a/base/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js
index 17c0e10..b6fd5dc 100644
--- a/base/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/simple-ref.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js
index f385a6f..ef246b5 100644
--- a/base/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/strict-optional.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js
index 6db6cca..37f8c58 100644
--- a/base/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-array.schema/default/TopLevel.js
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
index e182a8b..1cdf5bf 100644
--- a/base/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
index c8d59da..aba0687 100644
--- a/base/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
index bd2bada..e8add90 100644
--- a/base/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js
index 0a3be23..0ef5021 100644
--- a/base/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/tuple.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
index 8c9f7fb..43d4ea8 100644
--- a/base/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -137,7 +137,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
index ab0a898..7a5e670 100644
--- a/base/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js
index 0e237ee..6fc2761 100644
--- a/base/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/union-int-double.schema/default/TopLevel.js
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js
index 2b31d51..d51a622 100644
--- a/base/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/union-list.schema/default/TopLevel.js
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js
index af3f6dc..12ba498 100644
--- a/base/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/union.schema/default/TopLevel.js
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js
index b30ae68..00c6cf9 100644
--- a/base/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/uuid.schema/default/TopLevel.js
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js
index e870aef..55f0d57 100644
--- a/base/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/vega-lite.schema/default/TopLevel.js
@@ -6199,7 +6199,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -6210,7 +6210,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 2b936c1..c98f372 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
@@ -205,6 +205,7 @@ const (
 	Locale                     EnumEnum = "Locale"
 	Lock                       EnumEnum = "lock"
 	Long                       EnumEnum = "long"
+	MakeDictEncoder            EnumEnum = "makeDictEncoder"
 	Map                        EnumEnum = "map"
 	MarshalJSON                EnumEnum = "MarshalJSON"
 	MapEntry                   EnumEnum = "MapEntry"
@@ -377,7 +378,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, FromDict, 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, MarshalJSON, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJSON, 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, FromDict, 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, MakeDictEncoder, Map, MarshalJSON, 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, ToDict, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UnmarshalJSON, 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 2b1e85b..924d596 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
@@ -204,6 +204,7 @@ type TopLevel struct {
 	Locale                     *UnionLocale                     `json:"Locale"`
 	Lock                       *UnionLock                       `json:"lock"`
 	Long                       *UnionLong                       `json:"long"`
+	MakeDictEncoder            *UnionMakeDictEncoder            `json:"makeDictEncoder"`
 	Map                        *UnionMap                        `json:"map"`
 	MapEntry                   *UnionMapEntry                   `json:"MapEntry"`
 	MarshalJSON                *UnionMarshalJSON                `json:"MarshalJSON"`
@@ -895,6 +896,9 @@ type Lock struct {
 type Long struct {
 }
 
+type MakeDictEncoder struct {
+}
+
 type Map struct {
 }
 
@@ -5265,6 +5269,28 @@ func (x *UnionLong) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Long != nil, x.Long, false, nil, false, nil, false)
 }
 
+type UnionMakeDictEncoder struct {
+	Double          *float64
+	MakeDictEncoder *MakeDictEncoder
+}
+
+func (x *UnionMakeDictEncoder) UnmarshalJSON(data []byte) error {
+	x.MakeDictEncoder = nil
+	var c MakeDictEncoder
+	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.MakeDictEncoder = &c
+	}
+	return nil
+}
+
+func (x *UnionMakeDictEncoder) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.MakeDictEncoder != nil, x.MakeDictEncoder, false, nil, false, nil, false)
+}
+
 type UnionMap struct {
 	Double *float64
 	Map    *Map
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 0b02b5b..cf6dc03 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
@@ -198,6 +198,7 @@ data EnumEnum
     | LocaleEnumEnum
     | LockEnumEnum
     | LongEnumEnum
+    | MakeDictEncoderEnumEnum
     | MapEnumEnum
     | MarshalJSONEnumEnum
     | MapEntryEnumEnum
@@ -557,6 +558,7 @@ instance ToJSON EnumEnum where
     toJSON LocaleEnumEnum = "Locale"
     toJSON LockEnumEnum = "lock"
     toJSON LongEnumEnum = "long"
+    toJSON MakeDictEncoderEnumEnum = "makeDictEncoder"
     toJSON MapEnumEnum = "map"
     toJSON MarshalJSONEnumEnum = "MarshalJSON"
     toJSON MapEntryEnumEnum = "MapEntry"
@@ -904,6 +906,7 @@ instance FromJSON EnumEnum where
             parseText "Locale" = return LocaleEnumEnum
             parseText "lock" = return LockEnumEnum
             parseText "long" = return LongEnumEnum
+            parseText "makeDictEncoder" = return MakeDictEncoderEnumEnum
             parseText "map" = return MapEnumEnum
             parseText "MarshalJSON" = return MarshalJSONEnumEnum
             parseText "MapEntry" = return MapEntryEnumEnum
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 d32703c..976e010 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
@@ -167,6 +167,7 @@ module QuickType
     , Locale (..)
     , Lock (..)
     , Long (..)
+    , MakeDictEncoder (..)
     , MapClass (..)
     , MapEntry (..)
     , MarshalJSON (..)
@@ -509,6 +510,7 @@ module QuickType
     , UnionLocale (..)
     , UnionLock (..)
     , UnionLong (..)
+    , UnionMakeDictEncoder (..)
     , UnionMap (..)
     , UnionMapEntry (..)
     , UnionMarshalJSON (..)
@@ -879,6 +881,7 @@ data QuickType = QuickType
     , localeQuickType :: Maybe UnionLocale
     , lockQuickType :: Maybe UnionLock
     , longQuickType :: Maybe UnionLong
+    , makeDictEncoderQuickType :: Maybe UnionMakeDictEncoder
     , mapQuickType :: Maybe UnionMap
     , mapEntryQuickType :: Maybe UnionMapEntry
     , marshalJSONQuickType :: Maybe UnionMarshalJSON
@@ -2518,6 +2521,15 @@ data Long = Long
     {
     } deriving (Show)
 
+data UnionMakeDictEncoder
+    = DoubleInUnionMakeDictEncoder Double
+    | MakeDictEncoderInUnionMakeDictEncoder MakeDictEncoder
+    deriving (Show)
+
+data MakeDictEncoder = MakeDictEncoder
+    {
+    } deriving (Show)
+
 data UnionMap
     = DoubleInUnionMap Double
     | MapClassInUnionMap MapClass
@@ -4124,7 +4136,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 fromDictQuickType 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 marshalJSONQuickType 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 toDictQuickType toJSONQuickType topLevelQuickType toStringQuickType transientQuickType trueQuickType quickTypeTrueQuickType tryQuickType quickTypeTypeQuickType purpleTypeQuickType typealiasQuickType typedefQuickType typeidQuickType typenameQuickType typeofQuickType uintQuickType ulongQuickType uncheckedQuickType undefinedQuickType unionQuickType unmarshalJSONQuickType 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 fromDictQuickType 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 makeDictEncoderQuickType mapQuickType mapEntryQuickType marshalJSONQuickType 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 toDictQuickType toJSONQuickType topLevelQuickType toStringQuickType transientQuickType trueQuickType quickTypeTrueQuickType tryQuickType quickTypeTypeQuickType purpleTypeQuickType typealiasQuickType typedefQuickType typeidQuickType typenameQuickType typeofQuickType uintQuickType ulongQuickType uncheckedQuickType undefinedQuickType unionQuickType unmarshalJSONQuickType 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
@@ -4308,6 +4320,7 @@ instance ToJSON QuickType where
         , ("Locale" .=) <$> localeQuickType
         , ("lock" .=) <$> lockQuickType
         , ("long" .=) <$> longQuickType
+        , ("makeDictEncoder" .=) <$> makeDictEncoderQuickType
         , ("map" .=) <$> mapQuickType
         , ("MapEntry" .=) <$> mapEntryQuickType
         , ("MarshalJSON" .=) <$> marshalJSONQuickType
@@ -4655,6 +4668,7 @@ instance FromJSON QuickType where
         <*> v .:! "Locale"
         <*> v .:! "lock"
         <*> v .:! "long"
+        <*> v .:! "makeDictEncoder"
         <*> v .:! "map"
         <*> v .:! "MapEntry"
         <*> v .:! "MarshalJSON"
@@ -7113,6 +7127,20 @@ instance ToJSON Long where
 instance FromJSON Long where
     parseJSON (Object _) = return Long
 
+instance ToJSON UnionMakeDictEncoder where
+    toJSON (DoubleInUnionMakeDictEncoder x) = toJSON x
+    toJSON (MakeDictEncoderInUnionMakeDictEncoder x) = toJSON x
+
+instance FromJSON UnionMakeDictEncoder where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionMakeDictEncoder . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap MakeDictEncoderInUnionMakeDictEncoder . parseJSON) xs
+
+instance ToJSON MakeDictEncoder where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON MakeDictEncoder where
+    parseJSON (Object _) = return MakeDictEncoder
+
 instance ToJSON UnionMap where
     toJSON (DoubleInUnionMap x) = toJSON x
     toJSON (MapClassInUnionMap x) = toJSON x
diff --git a/base/schema-java/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java b/head/schema-java/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
index e2f2ba1..32dad35 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_DICT, 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, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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_DICT, 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, MAKE_DICT_ENCODER, MAP, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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() {
@@ -189,6 +189,7 @@ public enum Enum {
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
+            case MAKE_DICT_ENCODER: return "makeDictEncoder";
             case MAP: return "map";
             case MARSHAL_JSON: return "MarshalJSON";
             case MAP_ENTRY: return "MapEntry";
@@ -538,6 +539,7 @@ public enum Enum {
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
+        if (value.equals("makeDictEncoder")) return MAKE_DICT_ENCODER;
         if (value.equals("map")) return MAP;
         if (value.equals("MarshalJSON")) return MARSHAL_JSON;
         if (value.equals("MapEntry")) return MAP_ENTRY;
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java
new file mode 100644
index 0000000..e34b038
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class MakeDictEncoder {
+}
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 d741eed..9d9f3f7 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
@@ -185,6 +185,7 @@ public class TopLevel {
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
+    private UnionMakeDictEncoder makeDictEncoder;
     private UnionMap map;
     private UnionMapEntry mapEntry;
     private UnionMarshalJSON marshalJSON;
@@ -1257,6 +1258,11 @@ public class TopLevel {
     @JsonProperty("long")
     public void setTopLevelLong(UnionLong value) { this.topLevelLong = value; }
 
+    @JsonProperty("makeDictEncoder")
+    public UnionMakeDictEncoder getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(UnionMakeDictEncoder value) { this.makeDictEncoder = value; }
+
     @JsonProperty("map")
     public UnionMap getMap() { return map; }
     @JsonProperty("map")
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.java
new file mode 100644
index 0000000..1bc4117
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.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 = UnionMakeDictEncoder.Deserializer.class)
+@JsonSerialize(using = UnionMakeDictEncoder.Serializer.class)
+public class UnionMakeDictEncoder {
+    public Double doubleValue;
+    public MakeDictEncoder makeDictEncoderValue;
+
+    static class Deserializer extends JsonDeserializer<UnionMakeDictEncoder> {
+        @Override
+        public UnionMakeDictEncoder deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionMakeDictEncoder value = new UnionMakeDictEncoder();
+            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.makeDictEncoderValue = jsonParser.readValueAs(MakeDictEncoder.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionMakeDictEncoder");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionMakeDictEncoder> {
+        @Override
+        public void serialize(UnionMakeDictEncoder obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.makeDictEncoderValue != null) {
+                jsonGenerator.writeObject(obj.makeDictEncoderValue);
+                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 e2f2ba1..32dad35 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_DICT, 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, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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_DICT, 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, MAKE_DICT_ENCODER, MAP, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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() {
@@ -189,6 +189,7 @@ public enum Enum {
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
+            case MAKE_DICT_ENCODER: return "makeDictEncoder";
             case MAP: return "map";
             case MARSHAL_JSON: return "MarshalJSON";
             case MAP_ENTRY: return "MapEntry";
@@ -538,6 +539,7 @@ public enum Enum {
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
+        if (value.equals("makeDictEncoder")) return MAKE_DICT_ENCODER;
         if (value.equals("map")) return MAP;
         if (value.equals("MarshalJSON")) return MARSHAL_JSON;
         if (value.equals("MapEntry")) return MAP_ENTRY;
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java
new file mode 100644
index 0000000..e34b038
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class MakeDictEncoder {
+}
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 d741eed..9d9f3f7 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
@@ -185,6 +185,7 @@ public class TopLevel {
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
+    private UnionMakeDictEncoder makeDictEncoder;
     private UnionMap map;
     private UnionMapEntry mapEntry;
     private UnionMarshalJSON marshalJSON;
@@ -1257,6 +1258,11 @@ public class TopLevel {
     @JsonProperty("long")
     public void setTopLevelLong(UnionLong value) { this.topLevelLong = value; }
 
+    @JsonProperty("makeDictEncoder")
+    public UnionMakeDictEncoder getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(UnionMakeDictEncoder value) { this.makeDictEncoder = value; }
+
     @JsonProperty("map")
     public UnionMap getMap() { return map; }
     @JsonProperty("map")
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.java
new file mode 100644
index 0000000..1bc4117
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.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 = UnionMakeDictEncoder.Deserializer.class)
+@JsonSerialize(using = UnionMakeDictEncoder.Serializer.class)
+public class UnionMakeDictEncoder {
+    public Double doubleValue;
+    public MakeDictEncoder makeDictEncoderValue;
+
+    static class Deserializer extends JsonDeserializer<UnionMakeDictEncoder> {
+        @Override
+        public UnionMakeDictEncoder deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionMakeDictEncoder value = new UnionMakeDictEncoder();
+            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.makeDictEncoderValue = jsonParser.readValueAs(MakeDictEncoder.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionMakeDictEncoder");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionMakeDictEncoder> {
+        @Override
+        public void serialize(UnionMakeDictEncoder obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.makeDictEncoderValue != null) {
+                jsonGenerator.writeObject(obj.makeDictEncoderValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
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 e2f2ba1..32dad35 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_DICT, 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, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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_DICT, 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, MAKE_DICT_ENCODER, MAP, MARSHAL_JSON, 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, TO_DICT, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNMARSHAL_JSON, 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() {
@@ -189,6 +189,7 @@ public enum Enum {
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
+            case MAKE_DICT_ENCODER: return "makeDictEncoder";
             case MAP: return "map";
             case MARSHAL_JSON: return "MarshalJSON";
             case MAP_ENTRY: return "MapEntry";
@@ -538,6 +539,7 @@ public enum Enum {
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
+        if (value.equals("makeDictEncoder")) return MAKE_DICT_ENCODER;
         if (value.equals("map")) return MAP;
         if (value.equals("MarshalJSON")) return MARSHAL_JSON;
         if (value.equals("MapEntry")) return MAP_ENTRY;
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java
new file mode 100644
index 0000000..e34b038
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/MakeDictEncoder.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class MakeDictEncoder {
+}
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 d741eed..9d9f3f7 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
@@ -185,6 +185,7 @@ public class TopLevel {
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
+    private UnionMakeDictEncoder makeDictEncoder;
     private UnionMap map;
     private UnionMapEntry mapEntry;
     private UnionMarshalJSON marshalJSON;
@@ -1257,6 +1258,11 @@ public class TopLevel {
     @JsonProperty("long")
     public void setTopLevelLong(UnionLong value) { this.topLevelLong = value; }
 
+    @JsonProperty("makeDictEncoder")
+    public UnionMakeDictEncoder getMakeDictEncoder() { return makeDictEncoder; }
+    @JsonProperty("makeDictEncoder")
+    public void setMakeDictEncoder(UnionMakeDictEncoder value) { this.makeDictEncoder = value; }
+
     @JsonProperty("map")
     public UnionMap getMap() { return map; }
     @JsonProperty("map")
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.java
new file mode 100644
index 0000000..1bc4117
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionMakeDictEncoder.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 = UnionMakeDictEncoder.Deserializer.class)
+@JsonSerialize(using = UnionMakeDictEncoder.Serializer.class)
+public class UnionMakeDictEncoder {
+    public Double doubleValue;
+    public MakeDictEncoder makeDictEncoderValue;
+
+    static class Deserializer extends JsonDeserializer<UnionMakeDictEncoder> {
+        @Override
+        public UnionMakeDictEncoder deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionMakeDictEncoder value = new UnionMakeDictEncoder();
+            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.makeDictEncoderValue = jsonParser.readValueAs(MakeDictEncoder.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionMakeDictEncoder");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionMakeDictEncoder> {
+        @Override
+        public void serialize(UnionMakeDictEncoder obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.makeDictEncoderValue != null) {
+                jsonGenerator.writeObject(obj.makeDictEncoderValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/base/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js
index eb93e60..154797c 100644
--- a/base/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/accessors.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
index 01d1011..21b8574 100644
--- a/base/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js
index 93439e6..a7e673a 100644
--- a/base/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/any.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js
index d5a8ec8..0d81450 100644
--- a/base/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/bool-string.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
index 596d20f..76f7547 100644
--- a/base/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js
index 4b3914b..c0e550b 100644
--- a/base/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/camelCase.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js
index 0c7c22f..91bb633 100644
--- a/base/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/class-map-union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
index 13e6554..72e87d1 100644
--- a/base/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/class-with-additional.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
index df87d90..2dac6aa 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
index df87d90..2dac6aa 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
index d5f1013..c674b26 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js
index fc9edb9..ba69430 100644
--- a/base/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/comment-injection.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js
index 633025b..783418a 100644
--- a/base/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/const-non-string.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js
index 38db74a..9343932 100644
--- a/base/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/constructor.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js
index 8f33714..1481ace 100644
--- a/base/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/cut-enum.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
index 02a84a3..4d28176 100644
--- a/base/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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..285a16b 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
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js
index fed7bb6..9c7d374 100644
--- a/base/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/default-value.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
index a60a61d..5519be4 100644
--- a/base/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js
index 9beaaae..339ad39 100644
--- a/base/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/description.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
index bd3ee9a..d1970f4 100644
--- a/base/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js
index 57bbea2..1e8b660 100644
--- a/base/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/empty-object.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js
index a0aed2b..da47547 100644
--- a/base/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum-large.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
index 492c8d8..6efdca8 100644
--- a/base/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum-with-null.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
index c7ec8cd..4de4ca1 100644
--- a/base/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum-with-values.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js
index 2242ba6..6806070 100644
--- a/base/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/enum.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
index 2f0bc8f..50507ac 100644
--- a/base/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
index e5d80d9..f69fbc0 100644
--- a/base/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
index 074fee8..57ead81 100644
--- a/base/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js
index 8ceabb8..12344b7 100644
--- a/base/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/id-no-address.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js
index c70a4f7..7daea57 100644
--- a/base/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/id-root.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
index b293c44..038af9b 100644
--- a/base/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
index afc3a12..4dc53ea 100644
--- a/base/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
index 7b6d864..ecb67b6 100644
--- a/base/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
index 77234bf..fcb27b0 100644
--- a/base/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
index 0be94db..039832e 100644
--- a/base/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-before-number.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
index dbc9c1a..9a0922c 100644
--- a/base/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-float-union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js
index 0464053..499421f 100644
--- a/base/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-string.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js
index b132e1a..e04899d 100644
--- a/base/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/integer-type.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
index 42c8812..d2b9fa9 100644
--- a/base/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/intersection-nested.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js
index a7c7c5e..07e6097 100644
--- a/base/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/intersection.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
index 9515706..42e24b8 100644
--- a/base/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 97c02f0..22fac51 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
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -376,6 +376,7 @@ const typeMap = {
         "Locale",
         "lock",
         "long",
+        "makeDictEncoder",
         "map",
         "MarshalJSON",
         "MapEntry",
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 e9e80be..7202e16 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
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -375,6 +375,7 @@ const typeMap = {
         { json: "Locale", js: "Locale", typ: u(undefined, u(r("Locale"), 3.14)) },
         { json: "lock", js: "lock", typ: u(undefined, u(r("Lock"), 3.14)) },
         { json: "long", js: "long", typ: u(undefined, u(r("Long"), 3.14)) },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: u(undefined, u(r("MakeDictEncoder"), 3.14)) },
         { json: "map", js: "map", typ: u(undefined, u(r("Map"), 3.14)) },
         { json: "MapEntry", js: "MapEntry", typ: u(undefined, u(r("MapEntry"), 3.14)) },
         { json: "MarshalJSON", js: "MarshalJSON", typ: u(undefined, u(r("MarshalJSON"), 3.14)) },
@@ -967,6 +968,8 @@ const typeMap = {
     ], false),
     "Long": o([
     ], false),
+    "MakeDictEncoder": o([
+    ], false),
     "Map": o([
     ], false),
     "MetadataPropertyHandling": o([
diff --git a/base/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js
index 728625c..57811e6 100644
--- a/base/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/light.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js
index 2374532..ef2cb33 100644
--- a/base/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/list.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js
index b484c0d..6b88673 100644
--- a/base/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/min-max-items.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
index d29d8cb..4fc5ece 100644
--- a/base/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/minmax-integer.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js
index ef1dd4c..6c9528f 100644
--- a/base/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/minmax.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
index 7fbee31..aef1a14 100644
--- a/base/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/minmaxlength.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
index c378dc9..30fe404 100644
--- a/base/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
index ac03b2a..6ab00e7 100644
--- a/base/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
index 5fcdf07..ca65e69 100644
--- a/base/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
index b3dee50..c733173 100644
--- a/base/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
index ad02812..d582759 100644
--- a/base/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js
index 4b78556..3f9d981 100644
--- a/base/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/object-type-required.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js
index cb9365b..305247f 100644
--- a/base/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-any.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
index d9d25b7..a92010b 100644
--- a/base/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
index dfcbd91..3011e2c 100644
--- a/base/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-constraints.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
index 464092f..4f4a047 100644
--- a/base/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-date-time.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js
index b06093c..a44a01e 100644
--- a/base/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-enum.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js
index 60e3446..b1f3239 100644
--- a/base/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/optional-property.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js
index 4b96753..748c15d 100644
--- a/base/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/pattern.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js
index 87d210f..6aab75f 100644
--- a/base/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/postman-collection.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js
index b2316bd..4c99b15 100644
--- a/base/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/prefix-items.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
index 17a3209..f892c8e 100644
--- a/base/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
index 8f33714..1481ace 100644
--- a/base/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/ref-id-files.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js
index 2374532..ef2cb33 100644
--- a/base/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/ref-remote.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
index 6759356..5296c11 100644
--- a/base/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/renaming-bug.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js
index 28f27ca..ca9a108 100644
--- a/base/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/required-draft3.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
index 4f4880b..51d7faa 100644
--- a/base/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/required-non-properties.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js
index 28f27ca..ca9a108 100644
--- a/base/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/required.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
index c5a3d56..bd6165f 100644
--- a/base/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
index 90aacfd..9424391 100644
--- a/base/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/schema-constraints.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js
index 2374532..ef2cb33 100644
--- a/base/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/simple-ref.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js
index fc674aa..4f47d43 100644
--- a/base/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/strict-optional.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js
index c52556d..315f9f3 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-array.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
index a86a1a2..65890d1 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-enum.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
index b35df94..960e9f5 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
index 28cb102..c749fac 100644
--- a/base/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js
index 0d95545..d7f14f7 100644
--- a/base/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/tuple.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
index 2608ea9..fff310d 100644
--- a/base/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
index d82c497..b249542 100644
--- a/base/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js
index 02359d9..78c36f9 100644
--- a/base/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/union-int-double.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js
index a10786e..72fc813 100644
--- a/base/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/union-list.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js
index 7b9e08f..5492a65 100644
--- a/base/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/union.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js
index 4694515..fcf3299 100644
--- a/base/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/uuid.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js
index 61dcf18..76f28a7 100644
--- a/base/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/vega-lite.schema/default/TopLevel.js
@@ -101,7 +101,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result = {};
+        const result = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -112,7 +112,7 @@ function transform(val, typ, getProps, key = '', parent = '') {
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 a8d385a..11e8d4d 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_dict', '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', 'MarshalJSON', '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', 'to_dict', 'transient', 'True', 'true', 'try', 'Type', 'type', 'typealias', 'typedef', 'typeid', 'typename', 'typeof', 'uint', 'ulong', 'unchecked', 'undefined', 'union', 'UnmarshalJSON', '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_dict', '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', 'makeDictEncoder', 'map', 'MarshalJSON', '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', 'to_dict', 'transient', 'True', 'true', 'try', 'Type', 'type', 'typealias', 'typedef', 'typeid', 'typename', 'typeof', 'uint', 'ulong', 'unchecked', 'undefined', 'union', 'UnmarshalJSON', '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 0c08203..e24225f 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
@@ -228,6 +228,7 @@ let _Let;
 let _List;
 let _Lock;
 let _Long;
+let _MakeDictEncoder;
 let _Map;
 let _MetadataPropertyHandling;
 let _Module;
@@ -785,6 +786,8 @@ _Lock = PropTypes.shape({
 });
 _Long = PropTypes.shape({
 });
+_MakeDictEncoder = PropTypes.shape({
+});
 _Map = PropTypes.shape({
 });
 _MetadataPropertyHandling = PropTypes.shape({
@@ -1222,6 +1225,7 @@ _TopLevel = PropTypes.shape({
     "Locale": PropTypes.oneOfType([_Locale, PropTypes.number, PropTypes.oneOf([null])]),
     "lock": PropTypes.oneOfType([_Lock, PropTypes.number, PropTypes.oneOf([null])]),
     "long": PropTypes.oneOfType([_Long, PropTypes.number, PropTypes.oneOf([null])]),
+    "makeDictEncoder": PropTypes.oneOfType([_MakeDictEncoder, PropTypes.number, PropTypes.oneOf([null])]),
     "map": PropTypes.oneOfType([_Map, PropTypes.number, PropTypes.oneOf([null])]),
     "MapEntry": PropTypes.oneOfType([_MapEntry, PropTypes.number, PropTypes.oneOf([null])]),
     "MarshalJSON": PropTypes.oneOfType([_MarshalJSON, PropTypes.number, PropTypes.oneOf([null])]),
diff --git a/base/schema-kotlin/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt b/head/schema-kotlin/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
index 2c3507d..701d2f1 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
@@ -208,6 +208,7 @@ enum class EnumEnum(val value: String) {
     Locale("Locale"),
     Lock("lock"),
     EnumLong("long"),
+    MakeDictEncoder("makeDictEncoder"),
     EnumMap("map"),
     MarshalJSON("MarshalJSON"),
     MapEntry("MapEntry"),
@@ -554,6 +555,7 @@ enum class EnumEnum(val value: String) {
             "Locale"                     -> Locale
             "lock"                       -> Lock
             "long"                       -> EnumLong
+            "makeDictEncoder"            -> MakeDictEncoder
             "map"                        -> EnumMap
             "MarshalJSON"                -> MarshalJSON
             "MapEntry"                   -> MapEntry
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 f9c7fed..47b04ef 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
@@ -221,6 +221,7 @@ enum class EnumEnum(val value: String) {
     Locale("Locale"),
     Lock("lock"),
     EnumLong("long"),
+    MakeDictEncoder("makeDictEncoder"),
     EnumMap("map"),
     MarshalJSON("MarshalJSON"),
     MapEntry("MapEntry"),
@@ -567,6 +568,7 @@ enum class EnumEnum(val value: String) {
             "Locale"                     -> Locale
             "lock"                       -> Lock
             "long"                       -> EnumLong
+            "makeDictEncoder"            -> MakeDictEncoder
             "map"                        -> EnumMap
             "MarshalJSON"                -> MarshalJSON
             "MapEntry"                   -> MapEntry
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 7d73580..460ef26 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
@@ -197,6 +197,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("Locale") Locale("Locale"),
     @SerialName("lock") Lock("lock"),
     @SerialName("long") EnumLong("long"),
+    @SerialName("makeDictEncoder") MakeDictEncoder("makeDictEncoder"),
     @SerialName("map") EnumMap("map"),
     @SerialName("MarshalJSON") MarshalJSON("MarshalJSON"),
     @SerialName("MapEntry") MapEntry("MapEntry"),
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 bf9a6b7..44f7c70 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
@@ -195,6 +195,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)locale;
 + (QTEnum *)lock;
 + (QTEnum *)enumLong;
++ (QTEnum *)makeDictEncoder;
 + (QTEnum *)map;
 + (QTEnum *)marshalJSON;
 + (QTEnum *)mapEntry;
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 0c4438b..9234b8a 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
@@ -198,6 +198,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"Locale": [[QTEnum alloc] initWithValue:@"Locale"],
         @"lock": [[QTEnum alloc] initWithValue:@"lock"],
         @"long": [[QTEnum alloc] initWithValue:@"long"],
+        @"makeDictEncoder": [[QTEnum alloc] initWithValue:@"makeDictEncoder"],
         @"map": [[QTEnum alloc] initWithValue:@"map"],
         @"MarshalJSON": [[QTEnum alloc] initWithValue:@"MarshalJSON"],
         @"MapEntry": [[QTEnum alloc] initWithValue:@"MapEntry"],
@@ -544,6 +545,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)locale { return QTEnum.values[@"Locale"]; }
 + (QTEnum *)lock { return QTEnum.values[@"lock"]; }
 + (QTEnum *)enumLong { return QTEnum.values[@"long"]; }
++ (QTEnum *)makeDictEncoder { return QTEnum.values[@"makeDictEncoder"]; }
 + (QTEnum *)map { return QTEnum.values[@"map"]; }
 + (QTEnum *)marshalJSON { return QTEnum.values[@"MarshalJSON"]; }
 + (QTEnum *)mapEntry { return QTEnum.values[@"MapEntry"]; }
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 6e4aa2b..635aa59 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
@@ -157,6 +157,7 @@
 @class QTList;
 @class QTLocale;
 @class QTLock;
+@class QTMakeDictEncoder;
 @class QTMap;
 @class QTMapEntry;
 @class QTMarshalJSON;
@@ -543,6 +544,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id locale;
 @property (nonatomic, nullable, copy)   id lock;
 @property (nonatomic, nullable, copy)   id qtTopLevelLong;
+@property (nonatomic, nullable, copy)   id makeDictEncoder;
 @property (nonatomic, nullable, copy)   id map;
 @property (nonatomic, nullable, copy)   id mapEntry;
 @property (nonatomic, nullable, copy)   id marshalJSON;
@@ -1164,6 +1166,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTLock : NSObject
 @end
 
+@interface QTMakeDictEncoder : NSObject
+@end
+
 @interface QTMap : 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 7aac858..8ac6b4e 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
@@ -768,6 +768,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTMakeDictEncoder (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTMap (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1946,6 +1951,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"Locale": @"locale",
         @"lock": @"lock",
         @"long": @"qtTopLevelLong",
+        @"makeDictEncoder": @"makeDictEncoder",
         @"map": @"map",
         @"MapEntry": @"mapEntry",
         @"MarshalJSON": @"marshalJSON",
@@ -8060,6 +8066,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTMakeDictEncoder
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTMakeDictEncoder 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 = QTMakeDictEncoder.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTMakeDictEncoder.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTMakeDictEncoder.properties.allValues];
+}
+@end
+
 @implementation QTMap
 + (NSDictionary<NSString *, NSString *> *)properties
 {
diff --git a/base/schema-php/test/inputs/schema/keyword-enum.schema/default/TopLevel.php b/head/schema-php/test/inputs/schema/keyword-enum.schema/default/TopLevel.php
index aa648a7..7efdf01 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
@@ -293,6 +293,7 @@ class EnumEnum {
     public static EnumEnum $LOCALE;
     public static EnumEnum $LOCK;
     public static EnumEnum $LONG;
+    public static EnumEnum $MAKE_DICT_ENCODER;
     public static EnumEnum $MAP;
     public static EnumEnum $MARSHAL_JSON;
     public static EnumEnum $MAP_ENTRY;
@@ -637,6 +638,7 @@ class EnumEnum {
         EnumEnum::$LOCALE = new EnumEnum('Locale');
         EnumEnum::$LOCK = new EnumEnum('lock');
         EnumEnum::$LONG = new EnumEnum('long');
+        EnumEnum::$MAKE_DICT_ENCODER = new EnumEnum('makeDictEncoder');
         EnumEnum::$MAP = new EnumEnum('map');
         EnumEnum::$MARSHAL_JSON = new EnumEnum('MarshalJSON');
         EnumEnum::$MAP_ENTRY = new EnumEnum('MapEntry');
@@ -993,6 +995,7 @@ class EnumEnum {
             case EnumEnum::$LOCALE->enum: return 'Locale';
             case EnumEnum::$LOCK->enum: return 'lock';
             case EnumEnum::$LONG->enum: return 'long';
+            case EnumEnum::$MAKE_DICT_ENCODER->enum: return 'makeDictEncoder';
             case EnumEnum::$MAP->enum: return 'map';
             case EnumEnum::$MARSHAL_JSON->enum: return 'MarshalJSON';
             case EnumEnum::$MAP_ENTRY->enum: return 'MapEntry';
@@ -1347,6 +1350,7 @@ class EnumEnum {
             case 'Locale': return EnumEnum::$LOCALE;
             case 'lock': return EnumEnum::$LOCK;
             case 'long': return EnumEnum::$LONG;
+            case 'makeDictEncoder': return EnumEnum::$MAKE_DICT_ENCODER;
             case 'map': return EnumEnum::$MAP;
             case 'MarshalJSON': return EnumEnum::$MARSHAL_JSON;
             case 'MapEntry': return EnumEnum::$MAP_ENTRY;
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 779056b..7388e4a 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
@@ -186,6 +186,7 @@ class TopLevel {
     private LocaleClass|float|null $locale; // json:Locale Optional
     private Lock|float|null $lock; // json:lock Optional
     private Long|float|null $long; // json:long Optional
+    private MakeDictEncoder|float|null $makeDictEncoder; // json:makeDictEncoder Optional
     private Map|float|null $map; // json:map Optional
     private MapEntry|float|null $mapEntry; // json:MapEntry Optional
     private MarshalJSON|float|null $marshalJSON; // json:MarshalJSON Optional
@@ -531,6 +532,7 @@ class TopLevel {
      * @param LocaleClass|float|null $locale
      * @param Lock|float|null $lock
      * @param Long|float|null $long
+     * @param MakeDictEncoder|float|null $makeDictEncoder
      * @param Map|float|null $map
      * @param MapEntry|float|null $mapEntry
      * @param MarshalJSON|float|null $marshalJSON
@@ -693,7 +695,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, FromDict|float|null $fromDict, 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, MarshalJSON|float|null $marshalJSON, 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, ToDict|float|null $toDict, 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, UnmarshalJSON|float|null $unmarshalJSON, 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, FromDict|float|null $fromDict, 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, MakeDictEncoder|float|null $makeDictEncoder, Map|float|null $map, MapEntry|float|null $mapEntry, MarshalJSON|float|null $marshalJSON, 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, ToDict|float|null $toDict, 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, UnmarshalJSON|float|null $unmarshalJSON, 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;
@@ -876,6 +878,7 @@ class TopLevel {
         $this->locale = $locale;
         $this->lock = $lock;
         $this->long = $long;
+        $this->makeDictEncoder = $makeDictEncoder;
         $this->map = $map;
         $this->mapEntry = $mapEntry;
         $this->marshalJSON = $marshalJSON;
@@ -14852,6 +14855,82 @@ class TopLevel {
         return Long::sample(); /*212:long*/
     }
 
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return MakeDictEncoder|float|null
+     */
+    public static function fromMakeDictEncoder(stdClass|float|null $value): MakeDictEncoder|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return MakeDictEncoder::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 toMakeDictEncoder(): stdClass|float|null {
+        if (TopLevel::validateMakeDictEncoder($this->makeDictEncoder))  {
+            if (is_null($this->makeDictEncoder)) {
+                return $this->makeDictEncoder; /*null*/
+            } elseif ($this->makeDictEncoder instanceof MakeDictEncoder) {
+                return $this->makeDictEncoder->to(); /*class*/
+            } elseif (is_float($this->makeDictEncoder) || is_int($this->makeDictEncoder)) {
+                return $this->makeDictEncoder; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::makeDictEncoder');
+    }
+
+    /**
+     * @param MakeDictEncoder|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMakeDictEncoder(MakeDictEncoder|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::makeDictEncoder");
+            }
+        } elseif ($value instanceof MakeDictEncoder) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::makeDictEncoder");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::makeDictEncoder");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return MakeDictEncoder|float|null
+     */
+    public function getMakeDictEncoder(): MakeDictEncoder|float|null {
+        if (TopLevel::validateMakeDictEncoder($this->makeDictEncoder))  {
+            return $this->makeDictEncoder;
+        }
+        throw new Exception('never get to getMakeDictEncoder TopLevel::makeDictEncoder');
+    }
+
+    /**
+     * @return MakeDictEncoder|float|null
+     */
+    public static function sampleMakeDictEncoder(): MakeDictEncoder|float|null {
+        return MakeDictEncoder::sample(); /*213:makeDictEncoder*/
+    }
+
     /**
      * @param stdClass|float|null $value
      * @throws Exception
@@ -14925,7 +15004,7 @@ class TopLevel {
      * @return Map|float|null
      */
     public static function sampleMap(): Map|float|null {
-        return Map::sample(); /*213:map*/
+        return Map::sample(); /*214:map*/
     }
 
     /**
@@ -15001,7 +15080,7 @@ class TopLevel {
      * @return MapEntry|float|null
      */
     public static function sampleMapEntry(): MapEntry|float|null {
-        return MapEntry::sample(); /*214:mapEntry*/
+        return MapEntry::sample(); /*215:mapEntry*/
     }
 
     /**
@@ -15077,7 +15156,7 @@ class TopLevel {
      * @return MarshalJSON|float|null
      */
     public static function sampleMarshalJSON(): MarshalJSON|float|null {
-        return MarshalJSON::sample(); /*215:marshalJSON*/
+        return MarshalJSON::sample(); /*216:marshalJSON*/
     }
 
     /**
@@ -15153,7 +15232,7 @@ class TopLevel {
      * @return MetadataPropertyHandling|float|null
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling|float|null {
-        return MetadataPropertyHandling::sample(); /*216:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*217:metadataPropertyHandling*/
     }
 
     /**
@@ -15229,7 +15308,7 @@ class TopLevel {
      * @return Module|float|null
      */
     public static function sampleModule(): Module|float|null {
-        return Module::sample(); /*217:module*/
+        return Module::sample(); /*218:module*/
     }
 
     /**
@@ -15305,7 +15384,7 @@ class TopLevel {
      * @return Mutable|float|null
      */
     public static function sampleMutable(): Mutable|float|null {
-        return Mutable::sample(); /*218:mutable*/
+        return Mutable::sample(); /*219:mutable*/
     }
 
     /**
@@ -15381,7 +15460,7 @@ class TopLevel {
      * @return Mutating|float|null
      */
     public static function sampleMutating(): Mutating|float|null {
-        return Mutating::sample(); /*219:mutating*/
+        return Mutating::sample(); /*220:mutating*/
     }
 
     /**
@@ -15457,7 +15536,7 @@ class TopLevel {
      * @return NamespaceClass|float|null
      */
     public static function sampleNamespace(): NamespaceClass|float|null {
-        return NamespaceClass::sample(); /*220:namespace*/
+        return NamespaceClass::sample(); /*221:namespace*/
     }
 
     /**
@@ -15533,7 +15612,7 @@ class TopLevel {
      * @return Native|float|null
      */
     public static function sampleNative(): Native|float|null {
-        return Native::sample(); /*221:native*/
+        return Native::sample(); /*222:native*/
     }
 
     /**
@@ -15609,7 +15688,7 @@ class TopLevel {
      * @return NewClass|float|null
      */
     public static function sampleNew(): NewClass|float|null {
-        return NewClass::sample(); /*222:new*/
+        return NewClass::sample(); /*223:new*/
     }
 
     /**
@@ -15685,7 +15764,7 @@ class TopLevel {
      * @return Newtonsoft|float|null
      */
     public static function sampleNewtonsoft(): Newtonsoft|float|null {
-        return Newtonsoft::sample(); /*223:newtonsoft*/
+        return Newtonsoft::sample(); /*224:newtonsoft*/
     }
 
     /**
@@ -15761,7 +15840,7 @@ class TopLevel {
      * @return Nil|float|null
      */
     public static function sampleNil(): Nil|float|null {
-        return Nil::sample(); /*224:nil*/
+        return Nil::sample(); /*225:nil*/
     }
 
     /**
@@ -15837,7 +15916,7 @@ class TopLevel {
      * @return No|float|null
      */
     public static function sampleNo(): No|float|null {
-        return No::sample(); /*225:no*/
+        return No::sample(); /*226:no*/
     }
 
     /**
@@ -15913,7 +15992,7 @@ class TopLevel {
      * @return Noexcept|float|null
      */
     public static function sampleNoexcept(): Noexcept|float|null {
-        return Noexcept::sample(); /*226:noexcept*/
+        return Noexcept::sample(); /*227:noexcept*/
     }
 
     /**
@@ -15989,7 +16068,7 @@ class TopLevel {
      * @return Nonatomic|float|null
      */
     public static function sampleNonatomic(): Nonatomic|float|null {
-        return Nonatomic::sample(); /*227:nonatomic*/
+        return Nonatomic::sample(); /*228:nonatomic*/
     }
 
     /**
@@ -16065,7 +16144,7 @@ class TopLevel {
      * @return NoneClass|float|null
      */
     public static function sampleTopLevelNone(): NoneClass|float|null {
-        return NoneClass::sample(); /*228:topLevelNone*/
+        return NoneClass::sample(); /*229:topLevelNone*/
     }
 
     /**
@@ -16141,7 +16220,7 @@ class TopLevel {
      * @return None|float|null
      */
     public static function sampleNone(): None|float|null {
-        return None::sample(); /*229:none*/
+        return None::sample(); /*230:none*/
     }
 
     /**
@@ -16217,7 +16296,7 @@ class TopLevel {
      * @return Nonlocal|float|null
      */
     public static function sampleNonlocal(): Nonlocal|float|null {
-        return Nonlocal::sample(); /*230:nonlocal*/
+        return Nonlocal::sample(); /*231:nonlocal*/
     }
 
     /**
@@ -16293,7 +16372,7 @@ class TopLevel {
      * @return Nonmutating|float|null
      */
     public static function sampleNonmutating(): Nonmutating|float|null {
-        return Nonmutating::sample(); /*231:nonmutating*/
+        return Nonmutating::sample(); /*232:nonmutating*/
     }
 
     /**
@@ -16369,7 +16448,7 @@ class TopLevel {
      * @return NoSuchMethod|float|null
      */
     public static function sampleNoSuchMethod(): NoSuchMethod|float|null {
-        return NoSuchMethod::sample(); /*232:noSuchMethod*/
+        return NoSuchMethod::sample(); /*233:noSuchMethod*/
     }
 
     /**
@@ -16445,7 +16524,7 @@ class TopLevel {
      * @return Not|float|null
      */
     public static function sampleNot(): Not|float|null {
-        return Not::sample(); /*233:not*/
+        return Not::sample(); /*234:not*/
     }
 
     /**
@@ -16521,7 +16600,7 @@ class TopLevel {
      * @return NotEq|float|null
      */
     public static function sampleNotEq(): NotEq|float|null {
-        return NotEq::sample(); /*234:notEq*/
+        return NotEq::sample(); /*235:notEq*/
     }
 
     /**
@@ -16597,7 +16676,7 @@ class TopLevel {
      * @return NSError|float|null
      */
     public static function sampleNSError(): NSError|float|null {
-        return NSError::sample(); /*235:nsError*/
+        return NSError::sample(); /*236:nsError*/
     }
 
     /**
@@ -16673,7 +16752,7 @@ class TopLevel {
      * @return NSObject|float|null
      */
     public static function sampleNSObject(): NSObject|float|null {
-        return NSObject::sample(); /*236:nsObject*/
+        return NSObject::sample(); /*237:nsObject*/
     }
 
     /**
@@ -16749,7 +16828,7 @@ class TopLevel {
      * @return NSString|float|null
      */
     public static function sampleNSString(): NSString|float|null {
-        return NSString::sample(); /*237:nsString*/
+        return NSString::sample(); /*238:nsString*/
     }
 
     /**
@@ -16825,7 +16904,7 @@ class TopLevel {
      * @return NULLClass|float|null
      */
     public static function sampleNull(): NULLClass|float|null {
-        return NULLClass::sample(); /*238:null*/
+        return NULLClass::sample(); /*239:null*/
     }
 
     /**
@@ -16901,7 +16980,7 @@ class TopLevel {
      * @return UnionNullNull|float|null
      */
     public static function sampleTopLevelNull(): UnionNullNull|float|null {
-        return UnionNullNull::sample(); /*239:topLevelNull*/
+        return UnionNullNull::sample(); /*240:topLevelNull*/
     }
 
     /**
@@ -16977,7 +17056,7 @@ class TopLevel {
      * @return Nullptr|float|null
      */
     public static function sampleNullptr(): Nullptr|float|null {
-        return Nullptr::sample(); /*240:nullptr*/
+        return Nullptr::sample(); /*241:nullptr*/
     }
 
     /**
@@ -17053,7 +17132,7 @@ class TopLevel {
      * @return Number|float|null
      */
     public static function sampleNumber(): Number|float|null {
-        return Number::sample(); /*241:number*/
+        return Number::sample(); /*242:number*/
     }
 
     /**
@@ -17129,7 +17208,7 @@ class TopLevel {
      * @return ObjectClass|float|null
      */
     public static function sampleObject(): ObjectClass|float|null {
-        return ObjectClass::sample(); /*242:object*/
+        return ObjectClass::sample(); /*243:object*/
     }
 
     /**
@@ -17205,7 +17284,7 @@ class TopLevel {
      * @return ObjectMapper|float|null
      */
     public static function sampleObjectMapper(): ObjectMapper|float|null {
-        return ObjectMapper::sample(); /*243:objectMapper*/
+        return ObjectMapper::sample(); /*244:objectMapper*/
     }
 
     /**
@@ -17281,7 +17360,7 @@ class TopLevel {
      * @return Of|float|null
      */
     public static function sampleOf(): Of|float|null {
-        return Of::sample(); /*244:of*/
+        return Of::sample(); /*245:of*/
     }
 
     /**
@@ -17357,7 +17436,7 @@ class TopLevel {
      * @return Oneway|float|null
      */
     public static function sampleOneway(): Oneway|float|null {
-        return Oneway::sample(); /*245:oneway*/
+        return Oneway::sample(); /*246:oneway*/
     }
 
     /**
@@ -17433,7 +17512,7 @@ class TopLevel {
      * @return Open|float|null
      */
     public static function sampleOpen(): Open|float|null {
-        return Open::sample(); /*246:open*/
+        return Open::sample(); /*247:open*/
     }
 
     /**
@@ -17509,7 +17588,7 @@ class TopLevel {
      * @return Operator|float|null
      */
     public static function sampleOperator(): Operator|float|null {
-        return Operator::sample(); /*247:operator*/
+        return Operator::sample(); /*248:operator*/
     }
 
     /**
@@ -17585,7 +17664,7 @@ class TopLevel {
      * @return Optional|float|null
      */
     public static function sampleOptional(): Optional|float|null {
-        return Optional::sample(); /*248:optional*/
+        return Optional::sample(); /*249:optional*/
     }
 
     /**
@@ -17661,7 +17740,7 @@ class TopLevel {
      * @return OrClass|float|null
      */
     public static function sampleOr(): OrClass|float|null {
-        return OrClass::sample(); /*249:or*/
+        return OrClass::sample(); /*250:or*/
     }
 
     /**
@@ -17737,7 +17816,7 @@ class TopLevel {
      * @return OrEq|float|null
      */
     public static function sampleOrEq(): OrEq|float|null {
-        return OrEq::sample(); /*250:orEq*/
+        return OrEq::sample(); /*251:orEq*/
     }
 
     /**
@@ -17813,7 +17892,7 @@ class TopLevel {
      * @return Out|float|null
      */
     public static function sampleOut(): Out|float|null {
-        return Out::sample(); /*251:out*/
+        return Out::sample(); /*252:out*/
     }
 
     /**
@@ -17889,7 +17968,7 @@ class TopLevel {
      * @return OverrideClass|float|null
      */
     public static function sampleOverride(): OverrideClass|float|null {
-        return OverrideClass::sample(); /*252:override*/
+        return OverrideClass::sample(); /*253:override*/
     }
 
     /**
@@ -17965,7 +18044,7 @@ class TopLevel {
      * @return Package|float|null
      */
     public static function samplePackage(): Package|float|null {
-        return Package::sample(); /*253:package*/
+        return Package::sample(); /*254:package*/
     }
 
     /**
@@ -18041,7 +18120,7 @@ class TopLevel {
      * @return Params|float|null
      */
     public static function sampleParams(): Params|float|null {
-        return Params::sample(); /*254:params*/
+        return Params::sample(); /*255:params*/
     }
 
     /**
@@ -18117,7 +18196,7 @@ class TopLevel {
      * @return Pass|float|null
      */
     public static function samplePass(): Pass|float|null {
-        return Pass::sample(); /*255:pass*/
+        return Pass::sample(); /*256:pass*/
     }
 
     /**
@@ -18193,7 +18272,7 @@ class TopLevel {
      * @return Port|float|null
      */
     public static function samplePort(): Port|float|null {
-        return Port::sample(); /*256:port*/
+        return Port::sample(); /*257:port*/
     }
 
     /**
@@ -18269,7 +18348,7 @@ class TopLevel {
      * @return Postfix|float|null
      */
     public static function samplePostfix(): Postfix|float|null {
-        return Postfix::sample(); /*257:postfix*/
+        return Postfix::sample(); /*258:postfix*/
     }
 
     /**
@@ -18345,7 +18424,7 @@ class TopLevel {
      * @return Precedence|float|null
      */
     public static function samplePrecedence(): Precedence|float|null {
-        return Precedence::sample(); /*258:precedence*/
+        return Precedence::sample(); /*259:precedence*/
     }
 
     /**
@@ -18421,7 +18500,7 @@ class TopLevel {
      * @return Prefix|float|null
      */
     public static function samplePrefix(): Prefix|float|null {
-        return Prefix::sample(); /*259:prefix*/
+        return Prefix::sample(); /*260:prefix*/
     }
 
     /**
@@ -18497,7 +18576,7 @@ class TopLevel {
      * @return PrimitiveKind|float|null
      */
     public static function samplePrimitiveKind(): PrimitiveKind|float|null {
-        return PrimitiveKind::sample(); /*260:primitiveKind*/
+        return PrimitiveKind::sample(); /*261:primitiveKind*/
     }
 
     /**
@@ -18573,7 +18652,7 @@ class TopLevel {
      * @return PrintClass|float|null
      */
     public static function samplePrint(): PrintClass|float|null {
-        return PrintClass::sample(); /*261:print*/
+        return PrintClass::sample(); /*262:print*/
     }
 
     /**
@@ -18649,7 +18728,7 @@ class TopLevel {
      * @return Printf|float|null
      */
     public static function samplePrintf(): Printf|float|null {
-        return Printf::sample(); /*262:printf*/
+        return Printf::sample(); /*263:printf*/
     }
 
     /**
@@ -18725,7 +18804,7 @@ class TopLevel {
      * @return PrintMembers|float|null
      */
     public static function samplePrintMembers(): PrintMembers|float|null {
-        return PrintMembers::sample(); /*263:printMembers*/
+        return PrintMembers::sample(); /*264:printMembers*/
     }
 
     /**
@@ -18801,7 +18880,7 @@ class TopLevel {
      * @return PrivateClass|float|null
      */
     public static function samplePrivate(): PrivateClass|float|null {
-        return PrivateClass::sample(); /*264:private*/
+        return PrivateClass::sample(); /*265:private*/
     }
 
     /**
@@ -18877,7 +18956,7 @@ class TopLevel {
      * @return ProtectedClass|float|null
      */
     public static function sampleProtected(): ProtectedClass|float|null {
-        return ProtectedClass::sample(); /*265:protected*/
+        return ProtectedClass::sample(); /*266:protected*/
     }
 
     /**
@@ -18953,7 +19032,7 @@ class TopLevel {
      * @return Protocol|float|null
      */
     public static function sampleProtocol(): Protocol|float|null {
-        return Protocol::sample(); /*266:protocol*/
+        return Protocol::sample(); /*267:protocol*/
     }
 
     /**
@@ -19029,7 +19108,7 @@ class TopLevel {
      * @return ProtocolClass|float|null
      */
     public static function sampleTopLevelProtocol(): ProtocolClass|float|null {
-        return ProtocolClass::sample(); /*267:topLevelProtocol*/
+        return ProtocolClass::sample(); /*268:topLevelProtocol*/
     }
 
     /**
@@ -19105,7 +19184,7 @@ class TopLevel {
      * @return PublicClass|float|null
      */
     public static function samplePublic(): PublicClass|float|null {
-        return PublicClass::sample(); /*268:public*/
+        return PublicClass::sample(); /*269:public*/
     }
 
     /**
@@ -19181,7 +19260,7 @@ class TopLevel {
      * @return Quicktype|float|null
      */
     public static function sampleQuicktype(): Quicktype|float|null {
-        return Quicktype::sample(); /*269:quicktype*/
+        return Quicktype::sample(); /*270:quicktype*/
     }
 
     /**
@@ -19257,7 +19336,7 @@ class TopLevel {
      * @return Raise|float|null
      */
     public static function sampleRaise(): Raise|float|null {
-        return Raise::sample(); /*270:raise*/
+        return Raise::sample(); /*271:raise*/
     }
 
     /**
@@ -19333,7 +19412,7 @@ class TopLevel {
      * @return Range|float|null
      */
     public static function sampleRange(): Range|float|null {
-        return Range::sample(); /*271:range*/
+        return Range::sample(); /*272:range*/
     }
 
     /**
@@ -19409,7 +19488,7 @@ class TopLevel {
      * @return ReadonlyClass|float|null
      */
     public static function sampleReadonly(): ReadonlyClass|float|null {
-        return ReadonlyClass::sample(); /*272:readonly*/
+        return ReadonlyClass::sample(); /*273:readonly*/
     }
 
     /**
@@ -19485,7 +19564,7 @@ class TopLevel {
      * @return Ref|float|null
      */
     public static function sampleRef(): Ref|float|null {
-        return Ref::sample(); /*273:ref*/
+        return Ref::sample(); /*274:ref*/
     }
 
     /**
@@ -19561,7 +19640,7 @@ class TopLevel {
      * @return RegExp|float|null
      */
     public static function sampleRegExp(): RegExp|float|null {
-        return RegExp::sample(); /*274:regExp*/
+        return RegExp::sample(); /*275:regExp*/
     }
 
     /**
@@ -19637,7 +19716,7 @@ class TopLevel {
      * @return Register|float|null
      */
     public static function sampleRegister(): Register|float|null {
-        return Register::sample(); /*275:register*/
+        return Register::sample(); /*276:register*/
     }
 
     /**
@@ -19713,7 +19792,7 @@ class TopLevel {
      * @return ReinterpretCast|float|null
      */
     public static function sampleReinterpretCast(): ReinterpretCast|float|null {
-        return ReinterpretCast::sample(); /*276:reinterpretCast*/
+        return ReinterpretCast::sample(); /*277:reinterpretCast*/
     }
 
     /**
@@ -19789,7 +19868,7 @@ class TopLevel {
      * @return Repeat|float|null
      */
     public static function sampleRepeat(): Repeat|float|null {
-        return Repeat::sample(); /*277:repeat*/
+        return Repeat::sample(); /*278:repeat*/
     }
 
     /**
@@ -19865,7 +19944,7 @@ class TopLevel {
      * @return RequireClass|float|null
      */
     public static function sampleRequire(): RequireClass|float|null {
-        return RequireClass::sample(); /*278:require*/
+        return RequireClass::sample(); /*279:require*/
     }
 
     /**
@@ -19941,7 +20020,7 @@ class TopLevel {
      * @return Required|float|null
      */
     public static function sampleRequired(): Required|float|null {
-        return Required::sample(); /*279:required*/
+        return Required::sample(); /*280:required*/
     }
 
     /**
@@ -20017,7 +20096,7 @@ class TopLevel {
      * @return Requires|float|null
      */
     public static function sampleRequires(): Requires|float|null {
-        return Requires::sample(); /*280:requires*/
+        return Requires::sample(); /*281:requires*/
     }
 
     /**
@@ -20093,7 +20172,7 @@ class TopLevel {
      * @return Restrict|float|null
      */
     public static function sampleRestrict(): Restrict|float|null {
-        return Restrict::sample(); /*281:restrict*/
+        return Restrict::sample(); /*282:restrict*/
     }
 
     /**
@@ -20169,7 +20248,7 @@ class TopLevel {
      * @return Retain|float|null
      */
     public static function sampleRetain(): Retain|float|null {
-        return Retain::sample(); /*282:retain*/
+        return Retain::sample(); /*283:retain*/
     }
 
     /**
@@ -20245,7 +20324,7 @@ class TopLevel {
      * @return Rethrows|float|null
      */
     public static function sampleRethrows(): Rethrows|float|null {
-        return Rethrows::sample(); /*283:rethrows*/
+        return Rethrows::sample(); /*284:rethrows*/
     }
 
     /**
@@ -20321,7 +20400,7 @@ class TopLevel {
      * @return ReturnClass|float|null
      */
     public static function sampleReturn(): ReturnClass|float|null {
-        return ReturnClass::sample(); /*284:return*/
+        return ReturnClass::sample(); /*285:return*/
     }
 
     /**
@@ -20397,7 +20476,7 @@ class TopLevel {
      * @return Right|float|null
      */
     public static function sampleRight(): Right|float|null {
-        return Right::sample(); /*285:right*/
+        return Right::sample(); /*286:right*/
     }
 
     /**
@@ -20473,7 +20552,7 @@ class TopLevel {
      * @return RuntimeType|float|null
      */
     public static function sampleRuntimeType(): RuntimeType|float|null {
-        return RuntimeType::sample(); /*286:runtimeType*/
+        return RuntimeType::sample(); /*287:runtimeType*/
     }
 
     /**
@@ -20549,7 +20628,7 @@ class TopLevel {
      * @return S|float|null
      */
     public static function sampleS(): S|float|null {
-        return S::sample(); /*287:s*/
+        return S::sample(); /*288:s*/
     }
 
     /**
@@ -20625,7 +20704,7 @@ class TopLevel {
      * @return Sbyte|float|null
      */
     public static function sampleSbyte(): Sbyte|float|null {
-        return Sbyte::sample(); /*288:sbyte*/
+        return Sbyte::sample(); /*289:sbyte*/
     }
 
     /**
@@ -20701,7 +20780,7 @@ class TopLevel {
      * @return Sealed|float|null
      */
     public static function sampleSealed(): Sealed|float|null {
-        return Sealed::sample(); /*289:sealed*/
+        return Sealed::sample(); /*290:sealed*/
     }
 
     /**
@@ -20777,7 +20856,7 @@ class TopLevel {
      * @return Sel|float|null
      */
     public static function sampleSel(): Sel|float|null {
-        return Sel::sample(); /*290:sel*/
+        return Sel::sample(); /*291:sel*/
     }
 
     /**
@@ -20853,7 +20932,7 @@ class TopLevel {
      * @return Select|float|null
      */
     public static function sampleSelect(): Select|float|null {
-        return Select::sample(); /*291:select*/
+        return Select::sample(); /*292:select*/
     }
 
     /**
@@ -20929,7 +21008,7 @@ class TopLevel {
      * @return SelfClass|float|null
      */
     public static function sampleSelf(): SelfClass|float|null {
-        return SelfClass::sample(); /*292:self*/
+        return SelfClass::sample(); /*293:self*/
     }
 
     /**
@@ -21005,7 +21084,7 @@ class TopLevel {
      * @return UnionSelfSelf|float|null
      */
     public static function sampleTopLevelSelf(): UnionSelfSelf|float|null {
-        return UnionSelfSelf::sample(); /*293:topLevelSelf*/
+        return UnionSelfSelf::sample(); /*294:topLevelSelf*/
     }
 
     /**
@@ -21081,7 +21160,7 @@ class TopLevel {
      * @return Sendable|float|null
      */
     public static function sampleSendable(): Sendable|float|null {
-        return Sendable::sample(); /*294:sendable*/
+        return Sendable::sample(); /*295:sendable*/
     }
 
     /**
@@ -21157,7 +21236,7 @@ class TopLevel {
      * @return SerialDescriptor|float|null
      */
     public static function sampleSerialDescriptor(): SerialDescriptor|float|null {
-        return SerialDescriptor::sample(); /*295:serialDescriptor*/
+        return SerialDescriptor::sample(); /*296:serialDescriptor*/
     }
 
     /**
@@ -21233,7 +21312,7 @@ class TopLevel {
      * @return SerializableClass|float|null
      */
     public static function sampleSerializable(): SerializableClass|float|null {
-        return SerializableClass::sample(); /*296:serializable*/
+        return SerializableClass::sample(); /*297:serializable*/
     }
 
     /**
@@ -21309,7 +21388,7 @@ class TopLevel {
      * @return Serialize|float|null
      */
     public static function sampleSerialize(): Serialize|float|null {
-        return Serialize::sample(); /*297:serialize*/
+        return Serialize::sample(); /*298:serialize*/
     }
 
     /**
@@ -21385,7 +21464,7 @@ class TopLevel {
      * @return SerializerProvider|float|null
      */
     public static function sampleSerializerProvider(): SerializerProvider|float|null {
-        return SerializerProvider::sample(); /*298:serializerProvider*/
+        return SerializerProvider::sample(); /*299:serializerProvider*/
     }
 
     /**
@@ -21461,7 +21540,7 @@ class TopLevel {
      * @return SerialName|float|null
      */
     public static function sampleSerialName(): SerialName|float|null {
-        return SerialName::sample(); /*299:serialName*/
+        return SerialName::sample(); /*300:serialName*/
     }
 
     /**
@@ -21537,7 +21616,7 @@ class TopLevel {
      * @return Set|float|null
      */
     public static function sampleSet(): Set|float|null {
-        return Set::sample(); /*300:set*/
+        return Set::sample(); /*301:set*/
     }
 
     /**
@@ -21613,7 +21692,7 @@ class TopLevel {
      * @return Short|float|null
      */
     public static function sampleShort(): Short|float|null {
-        return Short::sample(); /*301:short*/
+        return Short::sample(); /*302:short*/
     }
 
     /**
@@ -21689,7 +21768,7 @@ class TopLevel {
      * @return Signed|float|null
      */
     public static function sampleSigned(): Signed|float|null {
-        return Signed::sample(); /*302:signed*/
+        return Signed::sample(); /*303:signed*/
     }
 
     /**
@@ -21765,7 +21844,7 @@ class TopLevel {
      * @return SimpleModule|float|null
      */
     public static function sampleSimpleModule(): SimpleModule|float|null {
-        return SimpleModule::sample(); /*303:simpleModule*/
+        return SimpleModule::sample(); /*304:simpleModule*/
     }
 
     /**
@@ -21841,7 +21920,7 @@ class TopLevel {
      * @return Sizeof|float|null
      */
     public static function sampleSizeof(): Sizeof|float|null {
-        return Sizeof::sample(); /*304:sizeof*/
+        return Sizeof::sample(); /*305:sizeof*/
     }
 
     /**
@@ -21917,7 +21996,7 @@ class TopLevel {
      * @return Stackalloc|float|null
      */
     public static function sampleStackalloc(): Stackalloc|float|null {
-        return Stackalloc::sample(); /*305:stackalloc*/
+        return Stackalloc::sample(); /*306:stackalloc*/
     }
 
     /**
@@ -21993,7 +22072,7 @@ class TopLevel {
      * @return Standards|float|null
      */
     public static function sampleStandards(): Standards|float|null {
-        return Standards::sample(); /*306:standards*/
+        return Standards::sample(); /*307:standards*/
     }
 
     /**
@@ -22069,7 +22148,7 @@ class TopLevel {
      * @return StaticClass|float|null
      */
     public static function sampleStatic(): StaticClass|float|null {
-        return StaticClass::sample(); /*307:static*/
+        return StaticClass::sample(); /*308:static*/
     }
 
     /**
@@ -22145,7 +22224,7 @@ class TopLevel {
      * @return StaticAssert|float|null
      */
     public static function sampleStaticAssert(): StaticAssert|float|null {
-        return StaticAssert::sample(); /*308:staticAssert*/
+        return StaticAssert::sample(); /*309:staticAssert*/
     }
 
     /**
@@ -22221,7 +22300,7 @@ class TopLevel {
      * @return StaticCast|float|null
      */
     public static function sampleStaticCast(): StaticCast|float|null {
-        return StaticCast::sample(); /*309:staticCast*/
+        return StaticCast::sample(); /*310:staticCast*/
     }
 
     /**
@@ -22297,7 +22376,7 @@ class TopLevel {
      * @return StdDeserializer|float|null
      */
     public static function sampleStdDeserializer(): StdDeserializer|float|null {
-        return StdDeserializer::sample(); /*310:stdDeserializer*/
+        return StdDeserializer::sample(); /*311:stdDeserializer*/
     }
 
     /**
@@ -22373,7 +22452,7 @@ class TopLevel {
      * @return StdSerializer|float|null
      */
     public static function sampleStdSerializer(): StdSerializer|float|null {
-        return StdSerializer::sample(); /*311:stdSerializer*/
+        return StdSerializer::sample(); /*312:stdSerializer*/
     }
 
     /**
@@ -22449,7 +22528,7 @@ class TopLevel {
      * @return Strictfp|float|null
      */
     public static function sampleStrictfp(): Strictfp|float|null {
-        return Strictfp::sample(); /*312:strictfp*/
+        return Strictfp::sample(); /*313:strictfp*/
     }
 
     /**
@@ -22525,7 +22604,7 @@ class TopLevel {
      * @return StringClass|float|null
      */
     public static function sampleString(): StringClass|float|null {
-        return StringClass::sample(); /*313:string*/
+        return StringClass::sample(); /*314:string*/
     }
 
     /**
@@ -22601,7 +22680,7 @@ class TopLevel {
      * @return Struct|float|null
      */
     public static function sampleStruct(): Struct|float|null {
-        return Struct::sample(); /*314:struct*/
+        return Struct::sample(); /*315:struct*/
     }
 
     /**
@@ -22677,7 +22756,7 @@ class TopLevel {
      * @return Subscript|float|null
      */
     public static function sampleSubscript(): Subscript|float|null {
-        return Subscript::sample(); /*315:subscript*/
+        return Subscript::sample(); /*316:subscript*/
     }
 
     /**
@@ -22753,7 +22832,7 @@ class TopLevel {
      * @return Super|float|null
      */
     public static function sampleSuper(): Super|float|null {
-        return Super::sample(); /*316:super*/
+        return Super::sample(); /*317:super*/
     }
 
     /**
@@ -22829,7 +22908,7 @@ class TopLevel {
      * @return SwitchClass|float|null
      */
     public static function sampleSwitch(): SwitchClass|float|null {
-        return SwitchClass::sample(); /*317:switch*/
+        return SwitchClass::sample(); /*318:switch*/
     }
 
     /**
@@ -22905,7 +22984,7 @@ class TopLevel {
      * @return Symbol|float|null
      */
     public static function sampleSymbol(): Symbol|float|null {
-        return Symbol::sample(); /*318:symbol*/
+        return Symbol::sample(); /*319:symbol*/
     }
 
     /**
@@ -22981,7 +23060,7 @@ class TopLevel {
      * @return Synchronized|float|null
      */
     public static function sampleSynchronized(): Synchronized|float|null {
-        return Synchronized::sample(); /*319:synchronized*/
+        return Synchronized::sample(); /*320:synchronized*/
     }
 
     /**
@@ -23057,7 +23136,7 @@ class TopLevel {
      * @return System|float|null
      */
     public static function sampleSystem(): System|float|null {
-        return System::sample(); /*320:system*/
+        return System::sample(); /*321:system*/
     }
 
     /**
@@ -23133,7 +23212,7 @@ class TopLevel {
      * @return Template|float|null
      */
     public static function sampleTemplate(): Template|float|null {
-        return Template::sample(); /*321:template*/
+        return Template::sample(); /*322:template*/
     }
 
     /**
@@ -23209,7 +23288,7 @@ class TopLevel {
      * @return Then|float|null
      */
     public static function sampleThen(): Then|float|null {
-        return Then::sample(); /*322:then*/
+        return Then::sample(); /*323:then*/
     }
 
     /**
@@ -23285,7 +23364,7 @@ class TopLevel {
      * @return This|float|null
      */
     public static function sampleTopLevelThis(): This|float|null {
-        return This::sample(); /*323:topLevelThis*/
+        return This::sample(); /*324:topLevelThis*/
     }
 
     /**
@@ -23361,7 +23440,7 @@ class TopLevel {
      * @return ThreadLocal|float|null
      */
     public static function sampleThreadLocal(): ThreadLocal|float|null {
-        return ThreadLocal::sample(); /*324:threadLocal*/
+        return ThreadLocal::sample(); /*325:threadLocal*/
     }
 
     /**
@@ -23437,7 +23516,7 @@ class TopLevel {
      * @return ThrowClass|float|null
      */
     public static function sampleThrow(): ThrowClass|float|null {
-        return ThrowClass::sample(); /*325:throw*/
+        return ThrowClass::sample(); /*326:throw*/
     }
 
     /**
@@ -23513,7 +23592,7 @@ class TopLevel {
      * @return Throws|float|null
      */
     public static function sampleThrows(): Throws|float|null {
-        return Throws::sample(); /*326:throws*/
+        return Throws::sample(); /*327:throws*/
     }
 
     /**
@@ -23589,7 +23668,7 @@ class TopLevel {
      * @return TimeOnly|float|null
      */
     public static function sampleTimeOnly(): TimeOnly|float|null {
-        return TimeOnly::sample(); /*327:timeOnly*/
+        return TimeOnly::sample(); /*328:timeOnly*/
     }
 
     /**
@@ -23665,7 +23744,7 @@ class TopLevel {
      * @return TimeOnlyConverter|float|null
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter|float|null {
-        return TimeOnlyConverter::sample(); /*328:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*329:timeOnlyConverter*/
     }
 
     /**
@@ -23741,7 +23820,7 @@ class TopLevel {
      * @return TimeZone|float|null
      */
     public static function sampleTimeZone(): TimeZone|float|null {
-        return TimeZone::sample(); /*329:timeZone*/
+        return TimeZone::sample(); /*330:timeZone*/
     }
 
     /**
@@ -23817,7 +23896,7 @@ class TopLevel {
      * @return ToDict|float|null
      */
     public static function sampleToDict(): ToDict|float|null {
-        return ToDict::sample(); /*330:toDict*/
+        return ToDict::sample(); /*331:toDict*/
     }
 
     /**
@@ -23893,7 +23972,7 @@ class TopLevel {
      * @return ToJSON|float|null
      */
     public static function sampleToJSON(): ToJSON|float|null {
-        return ToJSON::sample(); /*331:toJSON*/
+        return ToJSON::sample(); /*332:toJSON*/
     }
 
     /**
@@ -23969,7 +24048,7 @@ class TopLevel {
      * @return TopLevelClass|float|null
      */
     public static function sampleTopLevel(): TopLevelClass|float|null {
-        return TopLevelClass::sample(); /*332:topLevel*/
+        return TopLevelClass::sample(); /*333:topLevel*/
     }
 
     /**
@@ -24045,7 +24124,7 @@ class TopLevel {
      * @return ToString|float|null
      */
     public static function sampleToString(): ToString|float|null {
-        return ToString::sample(); /*333:toString*/
+        return ToString::sample(); /*334:toString*/
     }
 
     /**
@@ -24121,7 +24200,7 @@ class TopLevel {
      * @return Transient|float|null
      */
     public static function sampleTransient(): Transient|float|null {
-        return Transient::sample(); /*334:transient*/
+        return Transient::sample(); /*335:transient*/
     }
 
     /**
@@ -24197,7 +24276,7 @@ class TopLevel {
      * @return TrueClass|float|null
      */
     public static function sampleTrue(): TrueClass|float|null {
-        return TrueClass::sample(); /*335:true*/
+        return TrueClass::sample(); /*336:true*/
     }
 
     /**
@@ -24273,7 +24352,7 @@ class TopLevel {
      * @return UnionTrueTrue|float|null
      */
     public static function sampleTopLevelTrue(): UnionTrueTrue|float|null {
-        return UnionTrueTrue::sample(); /*336:topLevelTrue*/
+        return UnionTrueTrue::sample(); /*337:topLevelTrue*/
     }
 
     /**
@@ -24349,7 +24428,7 @@ class TopLevel {
      * @return TryClass|float|null
      */
     public static function sampleTry(): TryClass|float|null {
-        return TryClass::sample(); /*337:try*/
+        return TryClass::sample(); /*338:try*/
     }
 
     /**
@@ -24425,7 +24504,7 @@ class TopLevel {
      * @return Type|float|null
      */
     public static function sampleType(): Type|float|null {
-        return Type::sample(); /*338:type*/
+        return Type::sample(); /*339:type*/
     }
 
     /**
@@ -24501,7 +24580,7 @@ class TopLevel {
      * @return TypeClass|float|null
      */
     public static function sampleTopLevelType(): TypeClass|float|null {
-        return TypeClass::sample(); /*339:topLevelType*/
+        return TypeClass::sample(); /*340:topLevelType*/
     }
 
     /**
@@ -24577,7 +24656,7 @@ class TopLevel {
      * @return Typealias|float|null
      */
     public static function sampleTypealias(): Typealias|float|null {
-        return Typealias::sample(); /*340:typealias*/
+        return Typealias::sample(); /*341:typealias*/
     }
 
     /**
@@ -24653,7 +24732,7 @@ class TopLevel {
      * @return Typedef|float|null
      */
     public static function sampleTypedef(): Typedef|float|null {
-        return Typedef::sample(); /*341:typedef*/
+        return Typedef::sample(); /*342:typedef*/
     }
 
     /**
@@ -24729,7 +24808,7 @@ class TopLevel {
      * @return Typeid|float|null
      */
     public static function sampleTypeid(): Typeid|float|null {
-        return Typeid::sample(); /*342:typeid*/
+        return Typeid::sample(); /*343:typeid*/
     }
 
     /**
@@ -24805,7 +24884,7 @@ class TopLevel {
      * @return Typename|float|null
      */
     public static function sampleTypename(): Typename|float|null {
-        return Typename::sample(); /*343:typename*/
+        return Typename::sample(); /*344:typename*/
     }
 
     /**
@@ -24881,7 +24960,7 @@ class TopLevel {
      * @return Typeof|float|null
      */
     public static function sampleTypeof(): Typeof|float|null {
-        return Typeof::sample(); /*344:typeof*/
+        return Typeof::sample(); /*345:typeof*/
     }
 
     /**
@@ -24957,7 +25036,7 @@ class TopLevel {
      * @return Uint|float|null
      */
     public static function sampleUint(): Uint|float|null {
-        return Uint::sample(); /*345:uint*/
+        return Uint::sample(); /*346:uint*/
     }
 
     /**
@@ -25033,7 +25112,7 @@ class TopLevel {
      * @return Ulong|float|null
      */
     public static function sampleUlong(): Ulong|float|null {
-        return Ulong::sample(); /*346:ulong*/
+        return Ulong::sample(); /*347:ulong*/
     }
 
     /**
@@ -25109,7 +25188,7 @@ class TopLevel {
      * @return Unchecked|float|null
      */
     public static function sampleUnchecked(): Unchecked|float|null {
-        return Unchecked::sample(); /*347:unchecked*/
+        return Unchecked::sample(); /*348:unchecked*/
     }
 
     /**
@@ -25185,7 +25264,7 @@ class TopLevel {
      * @return Undefined|float|null
      */
     public static function sampleUndefined(): Undefined|float|null {
-        return Undefined::sample(); /*348:undefined*/
+        return Undefined::sample(); /*349:undefined*/
     }
 
     /**
@@ -25261,7 +25340,7 @@ class TopLevel {
      * @return UnionClass|float|null
      */
     public static function sampleUnion(): UnionClass|float|null {
-        return UnionClass::sample(); /*349:union*/
+        return UnionClass::sample(); /*350:union*/
     }
 
     /**
@@ -25337,7 +25416,7 @@ class TopLevel {
      * @return UnmarshalJSON|float|null
      */
     public static function sampleUnmarshalJSON(): UnmarshalJSON|float|null {
-        return UnmarshalJSON::sample(); /*350:unmarshalJSON*/
+        return UnmarshalJSON::sample(); /*351:unmarshalJSON*/
     }
 
     /**
@@ -25413,7 +25492,7 @@ class TopLevel {
      * @return Unowned|float|null
      */
     public static function sampleUnowned(): Unowned|float|null {
-        return Unowned::sample(); /*351:unowned*/
+        return Unowned::sample(); /*352:unowned*/
     }
 
     /**
@@ -25489,7 +25568,7 @@ class TopLevel {
      * @return Unsafe|float|null
      */
     public static function sampleUnsafe(): Unsafe|float|null {
-        return Unsafe::sample(); /*352:unsafe*/
+        return Unsafe::sample(); /*353:unsafe*/
     }
 
     /**
@@ -25565,7 +25644,7 @@ class TopLevel {
      * @return Unsigned|float|null
      */
     public static function sampleUnsigned(): Unsigned|float|null {
-        return Unsigned::sample(); /*353:unsigned*/
+        return Unsigned::sample(); /*354:unsigned*/
     }
 
     /**
@@ -25641,7 +25720,7 @@ class TopLevel {
      * @return UseSerializers|float|null
      */
     public static function sampleUseSerializers(): UseSerializers|float|null {
-        return UseSerializers::sample(); /*354:useSerializers*/
+        return UseSerializers::sample(); /*355:useSerializers*/
     }
 
     /**
@@ -25717,7 +25796,7 @@ class TopLevel {
      * @return Ushort|float|null
      */
     public static function sampleUshort(): Ushort|float|null {
-        return Ushort::sample(); /*355:ushort*/
+        return Ushort::sample(); /*356:ushort*/
     }
 
     /**
@@ -25793,7 +25872,7 @@ class TopLevel {
      * @return Using|float|null
      */
     public static function sampleUsing(): Using|float|null {
-        return Using::sample(); /*356:using*/
+        return Using::sample(); /*357:using*/
     }
 
     /**
@@ -25869,7 +25948,7 @@ class TopLevel {
      * @return Utf8JSONReader|float|null
      */
     public static function sampleUtf8JSONReader(): Utf8JSONReader|float|null {
-        return Utf8JSONReader::sample(); /*357:utf8JSONReader*/
+        return Utf8JSONReader::sample(); /*358:utf8JSONReader*/
     }
 
     /**
@@ -25945,7 +26024,7 @@ class TopLevel {
      * @return Utf8JSONWriter|float|null
      */
     public static function sampleUtf8JSONWriter(): Utf8JSONWriter|float|null {
-        return Utf8JSONWriter::sample(); /*358:utf8JSONWriter*/
+        return Utf8JSONWriter::sample(); /*359:utf8JSONWriter*/
     }
 
     /**
@@ -26021,7 +26100,7 @@ class TopLevel {
      * @return UUID|float|null
      */
     public static function sampleUUID(): UUID|float|null {
-        return UUID::sample(); /*359:uuid*/
+        return UUID::sample(); /*360:uuid*/
     }
 
     /**
@@ -26097,7 +26176,7 @@ class TopLevel {
      * @return VarClass|float|null
      */
     public static function sampleVar(): VarClass|float|null {
-        return VarClass::sample(); /*360:var*/
+        return VarClass::sample(); /*361:var*/
     }
 
     /**
@@ -26173,7 +26252,7 @@ class TopLevel {
      * @return Virtual|float|null
      */
     public static function sampleVirtual(): Virtual|float|null {
-        return Virtual::sample(); /*361:virtual*/
+        return Virtual::sample(); /*362:virtual*/
     }
 
     /**
@@ -26249,7 +26328,7 @@ class TopLevel {
      * @return VoidClass|float|null
      */
     public static function sampleVoid(): VoidClass|float|null {
-        return VoidClass::sample(); /*362:void*/
+        return VoidClass::sample(); /*363:void*/
     }
 
     /**
@@ -26325,7 +26404,7 @@ class TopLevel {
      * @return Volatile|float|null
      */
     public static function sampleVolatile(): Volatile|float|null {
-        return Volatile::sample(); /*363:volatile*/
+        return Volatile::sample(); /*364:volatile*/
     }
 
     /**
@@ -26401,7 +26480,7 @@ class TopLevel {
      * @return WcharT|float|null
      */
     public static function sampleWcharT(): WcharT|float|null {
-        return WcharT::sample(); /*364:wcharT*/
+        return WcharT::sample(); /*365:wcharT*/
     }
 
     /**
@@ -26477,7 +26556,7 @@ class TopLevel {
      * @return Weak|float|null
      */
     public static function sampleWeak(): Weak|float|null {
-        return Weak::sample(); /*365:weak*/
+        return Weak::sample(); /*366:weak*/
     }
 
     /**
@@ -26553,7 +26632,7 @@ class TopLevel {
      * @return Where|float|null
      */
     public static function sampleWhere(): Where|float|null {
-        return Where::sample(); /*366:where*/
+        return Where::sample(); /*367:where*/
     }
 
     /**
@@ -26629,7 +26708,7 @@ class TopLevel {
      * @return WhileClass|float|null
      */
     public static function sampleWhile(): WhileClass|float|null {
-        return WhileClass::sample(); /*367:while*/
+        return WhileClass::sample(); /*368:while*/
     }
 
     /**
@@ -26705,7 +26784,7 @@ class TopLevel {
      * @return WillSet|float|null
      */
     public static function sampleWillSet(): WillSet|float|null {
-        return WillSet::sample(); /*368:willSet*/
+        return WillSet::sample(); /*369:willSet*/
     }
 
     /**
@@ -26781,7 +26860,7 @@ class TopLevel {
      * @return With|float|null
      */
     public static function sampleWith(): With|float|null {
-        return With::sample(); /*369:with*/
+        return With::sample(); /*370:with*/
     }
 
     /**
@@ -26857,7 +26936,7 @@ class TopLevel {
      * @return XorClass|float|null
      */
     public static function sampleXor(): XorClass|float|null {
-        return XorClass::sample(); /*370:xor*/
+        return XorClass::sample(); /*371:xor*/
     }
 
     /**
@@ -26933,7 +27012,7 @@ class TopLevel {
      * @return XorEq|float|null
      */
     public static function sampleXorEq(): XorEq|float|null {
-        return XorEq::sample(); /*371:xorEq*/
+        return XorEq::sample(); /*372:xorEq*/
     }
 
     /**
@@ -27009,7 +27088,7 @@ class TopLevel {
      * @return Yes|float|null
      */
     public static function sampleYes(): Yes|float|null {
-        return Yes::sample(); /*372:yes*/
+        return Yes::sample(); /*373:yes*/
     }
 
     /**
@@ -27085,7 +27164,7 @@ class TopLevel {
      * @return YieldClass|float|null
      */
     public static function sampleYield(): YieldClass|float|null {
-        return YieldClass::sample(); /*373:yield*/
+        return YieldClass::sample(); /*374:yield*/
     }
 
     /**
@@ -27275,6 +27354,7 @@ class TopLevel {
         || TopLevel::validateLocale($this->locale)
         || TopLevel::validateLock($this->lock)
         || TopLevel::validateLong($this->long)
+        || TopLevel::validateMakeDictEncoder($this->makeDictEncoder)
         || TopLevel::validateMap($this->map)
         || TopLevel::validateMapEntry($this->mapEntry)
         || TopLevel::validateMarshalJSON($this->marshalJSON)
@@ -27626,6 +27706,7 @@ class TopLevel {
         $out->{'Locale'} = $this->toLocale();
         $out->{'lock'} = $this->toLock();
         $out->{'long'} = $this->toLong();
+        $out->{'makeDictEncoder'} = $this->toMakeDictEncoder();
         $out->{'map'} = $this->toMap();
         $out->{'MapEntry'} = $this->toMapEntry();
         $out->{'MarshalJSON'} = $this->toMarshalJSON();
@@ -27979,6 +28060,7 @@ class TopLevel {
         ,TopLevel::fromLocale($obj->{'Locale'})
         ,TopLevel::fromLock($obj->{'lock'})
         ,TopLevel::fromLong($obj->{'long'})
+        ,TopLevel::fromMakeDictEncoder($obj->{'makeDictEncoder'})
         ,TopLevel::fromMap($obj->{'map'})
         ,TopLevel::fromMapEntry($obj->{'MapEntry'})
         ,TopLevel::fromMarshalJSON($obj->{'MarshalJSON'})
@@ -28330,6 +28412,7 @@ class TopLevel {
         ,TopLevel::sampleLocale()
         ,TopLevel::sampleLock()
         ,TopLevel::sampleLong()
+        ,TopLevel::sampleMakeDictEncoder()
         ,TopLevel::sampleMap()
         ,TopLevel::sampleMapEntry()
         ,TopLevel::sampleMarshalJSON()
@@ -36415,6 +36498,51 @@ class Long {
     }
 }
 
+// This is an autogenerated file:MakeDictEncoder
+
+class MakeDictEncoder {
+
+    /**
+     */
+    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 MakeDictEncoder
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): MakeDictEncoder {
+        return new MakeDictEncoder(
+        );
+    }
+
+    /**
+     * @return MakeDictEncoder
+     */
+    public static function sample(): MakeDictEncoder {
+        return new MakeDictEncoder(
+        );
+    }
+}
+
 // This is an autogenerated file:Map
 
 class Map {
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 8cd5493..fd0e099 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
@@ -213,6 +213,7 @@ enum Enum {
     LOCALE = "Locale",                                             // json: "Locale"
     LOCK = "lock",                                                 // json: "lock"
     LONG = "long",                                                 // json: "long"
+    MAKE_DICT_ENCODER = "makeDictEncoder",                         // json: "makeDictEncoder"
     MAP = "map",                                                   // json: "map"
     MARSHAL_JSON = "MarshalJSON",                                  // json: "MarshalJSON"
     MAP_ENTRY = "MapEntry",                                        // json: "MapEntry"
@@ -379,5 +380,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_dict"&&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 != "MarshalJSON"&&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 != "to_dict"&&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 != "UnmarshalJSON"&&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_dict"&&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 != "makeDictEncoder"&&json != "map"&&json != "MarshalJSON"&&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 != "to_dict"&&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 != "UnmarshalJSON"&&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 22bbd77..1b5ea24 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
@@ -195,6 +195,7 @@ class TopLevel {
     UnionLocale                     locale;                         // json: "Locale"
     UnionLock                       lock;                           // json: "lock"
     UnionLong                       long;                           // json: "long"
+    UnionMakeDictEncoder            make_dict_encoder;              // json: "makeDictEncoder"
     UnionMap                        map;                            // json: "map"
     UnionMapEntry                   map_entry;                      // json: "MapEntry"
     UnionMarshalJson                marshal_json;                   // json: "MarshalJSON"
@@ -541,6 +542,7 @@ class TopLevel {
             "Locale" : locale,
             "lock" : lock,
             "long" : long,
+            "makeDictEncoder" : make_dict_encoder,
             "map" : map,
             "MapEntry" : map_entry,
             "MarshalJSON" : marshal_json,
@@ -1074,6 +1076,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.lock = json["lock"];
     if (arrayp(json["long"])) error("Unexpected array");
     retval.long = json["long"];
+    if (arrayp(json["makeDictEncoder"])) error("Unexpected array");
+    retval.make_dict_encoder = json["makeDictEncoder"];
     if (arrayp(json["map"])) error("Unexpected array");
     retval.map = json["map"];
     if (arrayp(json["MapEntry"])) error("Unexpected array");
@@ -4744,6 +4748,28 @@ Long Long_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|MakeDictEncoder UnionMakeDictEncoder;
+
+UnionMakeDictEncoder UnionMakeDictEncoder_from_JSON(mixed json) {
+    return json;
+}
+
+class MakeDictEncoder {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+MakeDictEncoder MakeDictEncoder_from_JSON(mixed json) {
+    MakeDictEncoder retval = MakeDictEncoder();
+
+    return retval;
+}
+
 typedef float|Map UnionMap;
 
 UnionMap UnionMap_from_JSON(mixed json) {
diff --git a/base/schema-python/test/inputs/schema/keyword-enum.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/keyword-enum.schema/default/quicktype.py
index 695beaa..a7027ed 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
@@ -212,6 +212,7 @@ class EnumEnum(Enum):
     LOCALE = "Locale"
     LOCK = "lock"
     LONG = "long"
+    MAKE_DICT_ENCODER = "makeDictEncoder"
     MAP = "map"
     MARSHAL_JSON = "MarshalJSON"
     MAP_ENTRY = "MapEntry"
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 3f868fc..8b156fe 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
@@ -2134,6 +2134,20 @@ class Long:
         return result
 
 
+@dataclass
+class MakeDictEncoder:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'MakeDictEncoder':
+        assert isinstance(obj, dict)
+        return MakeDictEncoder()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Map:
     pass
@@ -5006,6 +5020,7 @@ class TopLevel:
     locale: float | Locale | None = None
     lock: float | Lock | None = None
     long: float | Long | None = None
+    make_dict_encoder: float | MakeDictEncoder | None = None
     map: float | Map | None = None
     map_entry: float | MapEntry | None = None
     marshal_json: float | MarshalJSON | None = None
@@ -5353,6 +5368,7 @@ class TopLevel:
         locale = from_union([from_float, Locale.from_dict, from_none], obj.get("Locale"))
         lock = from_union([from_float, Lock.from_dict, from_none], obj.get("lock"))
         long = from_union([from_float, Long.from_dict, from_none], obj.get("long"))
+        make_dict_encoder = from_union([from_float, MakeDictEncoder.from_dict, from_none], obj.get("makeDictEncoder"))
         map = from_union([from_float, Map.from_dict, from_none], obj.get("map"))
         map_entry = from_union([from_float, MapEntry.from_dict, from_none], obj.get("MapEntry"))
         marshal_json = from_union([from_float, MarshalJSON.from_dict, from_none], obj.get("MarshalJSON"))
@@ -5514,7 +5530,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, top_level_from_dict, 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, marshal_json, 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, top_level_to_dict, 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, unmarshal_json, 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, top_level_from_dict, 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, make_dict_encoder, map, map_entry, marshal_json, 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, top_level_to_dict, 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, unmarshal_json, 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 = {}
@@ -5882,6 +5898,8 @@ class TopLevel:
             result["lock"] = from_union([to_float, lambda x: to_class(Lock, x), from_none], self.lock)
         if self.long is not None:
             result["long"] = from_union([to_float, lambda x: to_class(Long, x), from_none], self.long)
+        if self.make_dict_encoder is not None:
+            result["makeDictEncoder"] = from_union([to_float, lambda x: to_class(MakeDictEncoder, x), from_none], self.make_dict_encoder)
         if self.map is not None:
             result["map"] = from_union([to_float, lambda x: to_class(Map, x), from_none], self.map)
         if self.map_entry is not None:
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 202f786..9e5b0e5 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_dict", "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", "MarshalJSON", "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", "to_dict", "transient", "True", "true", "try", "Type", "type", "typealias", "typedef", "typeid", "typename", "typeof", "uint", "ulong", "unchecked", "undefined", "union", "UnmarshalJSON", "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_dict", "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", "makeDictEncoder", "map", "MarshalJSON", "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", "to_dict", "transient", "True", "true", "try", "Type", "type", "typealias", "typedef", "typeid", "typename", "typeof", "uint", "ulong", "unchecked", "undefined", "union", "UnmarshalJSON", "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
@@ -201,6 +201,7 @@ module Enum
   Locale                     = "Locale"
   Lock                       = "lock"
   Long                       = "long"
+  MakeDictEncoder            = "makeDictEncoder"
   Map                        = "map"
   MarshalJSON                = "MarshalJSON"
   MapEntry                   = "MapEntry"
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 89a695d..787a2fb 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
@@ -9253,6 +9253,63 @@ class UnionLong < Dry::Struct
   end
 end
 
+class MakeDictEncoder < 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 UnionMakeDictEncoder < Dry::Struct
+  attribute :double,            Types::Double.optional
+  attribute :make_dict_encoder, MakeDictEncoder.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, make_dict_encoder: nil)
+    end
+    begin
+      value = MakeDictEncoder.from_dynamic!(d)
+      if schema.key(:make_dict_encoder).type.right.valid? value
+        return new(make_dict_encoder: 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 make_dict_encoder != nil
+      make_dict_encoder.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Map < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -19696,6 +19753,7 @@ class TopLevel < Dry::Struct
   attribute :locale,                         Types.Instance(UnionLocale).optional
   attribute :lock,                           Types.Instance(UnionLock).optional
   attribute :long,                           Types.Instance(UnionLong).optional
+  attribute :make_dict_encoder,              Types.Instance(UnionMakeDictEncoder).optional
   attribute :map,                            Types.Instance(UnionMap).optional
   attribute :map_entry,                      Types.Instance(UnionMapEntry).optional
   attribute :marshal_json,                   Types.Instance(UnionMarshalJSON).optional
@@ -20043,6 +20101,7 @@ class TopLevel < Dry::Struct
       locale:                         d.key?("Locale") ? UnionLocale.from_dynamic!(d["Locale"]) : nil,
       lock:                           d.key?("lock") ? UnionLock.from_dynamic!(d["lock"]) : nil,
       long:                           d.key?("long") ? UnionLong.from_dynamic!(d["long"]) : nil,
+      make_dict_encoder:              d.key?("makeDictEncoder") ? UnionMakeDictEncoder.from_dynamic!(d["makeDictEncoder"]) : nil,
       map:                            d.key?("map") ? UnionMap.from_dynamic!(d["map"]) : nil,
       map_entry:                      d.key?("MapEntry") ? UnionMapEntry.from_dynamic!(d["MapEntry"]) : nil,
       marshal_json:                   d.key?("MarshalJSON") ? UnionMarshalJSON.from_dynamic!(d["MarshalJSON"]) : nil,
@@ -20395,6 +20454,7 @@ class TopLevel < Dry::Struct
       "Locale"                     => locale&.to_dynamic,
       "lock"                       => lock&.to_dynamic,
       "long"                       => long&.to_dynamic,
+      "makeDictEncoder"            => make_dict_encoder&.to_dynamic,
       "map"                        => map&.to_dynamic,
       "MapEntry"                   => map_entry&.to_dynamic,
       "MarshalJSON"                => marshal_json&.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 89a695d..787a2fb 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
@@ -9253,6 +9253,63 @@ class UnionLong < Dry::Struct
   end
 end
 
+class MakeDictEncoder < 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 UnionMakeDictEncoder < Dry::Struct
+  attribute :double,            Types::Double.optional
+  attribute :make_dict_encoder, MakeDictEncoder.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, make_dict_encoder: nil)
+    end
+    begin
+      value = MakeDictEncoder.from_dynamic!(d)
+      if schema.key(:make_dict_encoder).type.right.valid? value
+        return new(make_dict_encoder: 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 make_dict_encoder != nil
+      make_dict_encoder.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Map < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -19696,6 +19753,7 @@ class TopLevel < Dry::Struct
   attribute :locale,                         Types.Instance(UnionLocale).optional
   attribute :lock,                           Types.Instance(UnionLock).optional
   attribute :long,                           Types.Instance(UnionLong).optional
+  attribute :make_dict_encoder,              Types.Instance(UnionMakeDictEncoder).optional
   attribute :map,                            Types.Instance(UnionMap).optional
   attribute :map_entry,                      Types.Instance(UnionMapEntry).optional
   attribute :marshal_json,                   Types.Instance(UnionMarshalJSON).optional
@@ -20043,6 +20101,7 @@ class TopLevel < Dry::Struct
       locale:                         d.key?("Locale") ? UnionLocale.from_dynamic!(d["Locale"]) : nil,
       lock:                           d.key?("lock") ? UnionLock.from_dynamic!(d["lock"]) : nil,
       long:                           d.key?("long") ? UnionLong.from_dynamic!(d["long"]) : nil,
+      make_dict_encoder:              d.key?("makeDictEncoder") ? UnionMakeDictEncoder.from_dynamic!(d["makeDictEncoder"]) : nil,
       map:                            d.key?("map") ? UnionMap.from_dynamic!(d["map"]) : nil,
       map_entry:                      d.key?("MapEntry") ? UnionMapEntry.from_dynamic!(d["MapEntry"]) : nil,
       marshal_json:                   d.key?("MarshalJSON") ? UnionMarshalJSON.from_dynamic!(d["MarshalJSON"]) : nil,
@@ -20395,6 +20454,7 @@ class TopLevel < Dry::Struct
       "Locale"                     => locale&.to_dynamic,
       "lock"                       => lock&.to_dynamic,
       "long"                       => long&.to_dynamic,
+      "makeDictEncoder"            => make_dict_encoder&.to_dynamic,
       "map"                        => map&.to_dynamic,
       "MapEntry"                   => map_entry&.to_dynamic,
       "MarshalJSON"                => marshal_json&.to_dynamic,
diff --git a/base/schema-rust/test/inputs/schema/keyword-enum.schema/default/module_under_test.rs b/head/schema-rust/test/inputs/schema/keyword-enum.schema/default/module_under_test.rs
index 58b177f..7322eeb 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
@@ -447,6 +447,9 @@ pub enum Enum {
 
     Long,
 
+    #[serde(rename = "makeDictEncoder")]
+    MakeDictEncoder,
+
     Map,
 
     #[serde(rename = "MarshalJSON")]
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 8f4b3cc..45c41e3 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
@@ -446,6 +446,9 @@ pub struct TopLevel {
 
     pub long: Option<UnionLong>,
 
+    #[serde(rename = "makeDictEncoder")]
+    pub make_dict_encoder: Option<UnionMakeDictEncoder>,
+
     pub map: Option<UnionMap>,
 
     #[serde(rename = "MapEntry")]
@@ -2712,6 +2715,18 @@ pub enum UnionLong {
 pub struct Long {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionMakeDictEncoder {
+    Double(f64),
+
+    MakeDictEncoder(MakeDictEncoder),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct MakeDictEncoder {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionMap {
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 e731bd0..c46341a 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
@@ -192,6 +192,7 @@ enum EnumEnum :
     case Locale
     case Lock
     case EnumLong
+    case MakeDictEncoder
     case EnumMap
     case MarshalJSON
     case MapEntry
@@ -537,6 +538,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "Locale" => scala.Right(EnumEnum.Locale)
     case "lock" => scala.Right(EnumEnum.Lock)
     case "long" => scala.Right(EnumEnum.EnumLong)
+    case "makeDictEncoder" => scala.Right(EnumEnum.MakeDictEncoder)
     case "map" => scala.Right(EnumEnum.EnumMap)
     case "MarshalJSON" => scala.Right(EnumEnum.MarshalJSON)
     case "MapEntry" => scala.Right(EnumEnum.MapEntry)
@@ -883,6 +885,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Locale => "Locale"
     case EnumEnum.Lock => "lock"
     case EnumEnum.EnumLong => "long"
+    case EnumEnum.MakeDictEncoder => "makeDictEncoder"
     case EnumEnum.EnumMap => "map"
     case EnumEnum.MarshalJSON => "MarshalJSON"
     case EnumEnum.MapEntry => "MapEntry"
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 3ebbc64..02c0615 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
@@ -263,6 +263,7 @@ enum EnumEnum :
     case Locale
     case Lock
     case EnumLong
+    case MakeDictEncoder
     case EnumMap
     case MarshalJSON
     case MapEntry
@@ -609,6 +610,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Locale => "Locale"
         case EnumEnum.Lock => "lock"
         case EnumEnum.EnumLong => "long"
+        case EnumEnum.MakeDictEncoder => "makeDictEncoder"
         case EnumEnum.EnumMap => "map"
         case EnumEnum.MarshalJSON => "MarshalJSON"
         case EnumEnum.MapEntry => "MapEntry"
@@ -954,6 +956,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "Locale" => EnumEnum.Locale
         case "lock" => EnumEnum.Lock
         case "long" => EnumEnum.EnumLong
+        case "makeDictEncoder" => EnumEnum.MakeDictEncoder
         case "map" => EnumEnum.EnumMap
         case "MarshalJSON" => EnumEnum.MarshalJSON
         case "MapEntry" => EnumEnum.MapEntry
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 ef15171..b4a116f 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
@@ -196,6 +196,7 @@
                 "Locale",
                 "lock",
                 "long",
+                "makeDictEncoder",
                 "map",
                 "MarshalJSON",
                 "MapEntry",
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 aa58115..265c371 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
@@ -552,6 +552,9 @@
                 "long": {
                     "$ref": "#/definitions/UnionLong"
                 },
+                "makeDictEncoder": {
+                    "$ref": "#/definitions/UnionMakeDictEncoder"
+                },
                 "map": {
                     "$ref": "#/definitions/UnionMap"
                 },
@@ -2114,6 +2117,11 @@
             "additionalProperties": false,
             "title": "Long"
         },
+        "MakeDictEncoder": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "MakeDictEncoder"
+        },
         "Map": {
             "type": "object",
             "additionalProperties": false,
@@ -5114,6 +5122,17 @@
             ],
             "title": "UnionLong"
         },
+        "UnionMakeDictEncoder": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/MakeDictEncoder"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionMakeDictEncoder"
+        },
         "UnionMap": {
             "anyOf": [
                 {
diff --git a/base/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
index 5c3d052..2d89706 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
@@ -230,6 +230,7 @@ enum Enum: String, Codable {
     case locale = "Locale"
     case lock = "lock"
     case long = "long"
+    case makeDictEncoder = "makeDictEncoder"
     case map = "map"
     case marshalJSON = "MarshalJSON"
     case mapEntry = "MapEntry"
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 b620a06..ac15f74 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
@@ -189,6 +189,7 @@ struct TopLevel: Codable {
     let locale: UnionLocale?
     let lock: UnionLock?
     let long: UnionLong?
+    let makeDictEncoder: UnionMakeDictEncoder?
     let map: UnionMap?
     let mapEntry: UnionMapEntry?
     let marshalJSON: UnionMarshalJSON?
@@ -534,6 +535,7 @@ struct TopLevel: Codable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case makeDictEncoder = "makeDictEncoder"
         case map = "map"
         case mapEntry = "MapEntry"
         case marshalJSON = "MarshalJSON"
@@ -899,6 +901,7 @@ extension TopLevel {
         locale: UnionLocale?? = nil,
         lock: UnionLock?? = nil,
         long: UnionLong?? = nil,
+        makeDictEncoder: UnionMakeDictEncoder?? = nil,
         map: UnionMap?? = nil,
         mapEntry: UnionMapEntry?? = nil,
         marshalJSON: UnionMarshalJSON?? = nil,
@@ -1244,6 +1247,7 @@ extension TopLevel {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             marshalJSON: marshalJSON ?? self.marshalJSON,
@@ -11073,6 +11077,77 @@ extension Long {
     }
 }
 
+enum UnionMakeDictEncoder: Codable {
+    case double(Double)
+    case makeDictEncoder(MakeDictEncoder)
+
+    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(MakeDictEncoder.self) {
+            self = .makeDictEncoder(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionMakeDictEncoder.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionMakeDictEncoder"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .makeDictEncoder(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - MakeDictEncoder
+struct MakeDictEncoder: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: MakeDictEncoder convenience initializers and mutators
+
+extension MakeDictEncoder {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(MakeDictEncoder.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(
+    ) -> MakeDictEncoder {
+        return MakeDictEncoder(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 enum UnionMap: Codable {
     case double(Double)
     case map(Map)
diff --git a/base/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts
index eb5c28b..2ffc755 100644
--- a/base/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/accessors.schema/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts
index 3a1e7c3..a318088 100644
--- a/base/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts
index 293a64c..ce1f66f 100644
--- a/base/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/any.schema/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts
index 8604379..7276850 100644
--- a/base/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/bool-string.schema/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts
index f2945d4..1dc7b4c 100644
--- a/base/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/boolean-subschema.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts
index 1c2f56a..598a503 100644
--- a/base/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/camelCase.schema/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
index dedacb8..2da174c 100644
--- a/base/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
index 15df75c..4bdb945 100644
--- a/base/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.ts b/head/schema-typescript/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.ts
index 2a74c96..131b04c 100644
--- a/base/schema-typescript/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/class-with-additional.schema/readonly-true--24da4fc107df/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
index 934c40e..a9e173d 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
index 2a64dc5..d15151f 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
index 504b925..2ed28c8 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection-nested-comment.schema/default/TopLevel.ts
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
index 7b4e86e..6d078d1 100644
--- a/base/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/comment-injection.schema/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
index 471597a..32c6e6c 100644
--- a/base/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts
index 213c0ae..cc1e318 100644
--- a/base/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/constructor.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts
index 4b340a1..6f262d0 100644
--- a/base/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/cut-enum.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
index f2f2b10..ed3394a 100644
--- a/base/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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..6e69353 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
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts
index 3b6063c..2516866 100644
--- a/base/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/default-value.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts
index 5fa5b81..7d7c6cb 100644
--- a/base/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/description-with-double-quotes.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts
index 239362c..4064599 100644
--- a/base/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/description.schema/default/TopLevel.ts
@@ -144,7 +144,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -155,7 +155,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
index 7c30718..27d37b3 100644
--- a/base/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts
index ad5255b..a2cf17f 100644
--- a/base/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/empty-object.schema/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts
index 12c52ac..1d3e416 100644
--- a/base/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum-large.schema/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts
index faf205e..8a139dd 100644
--- a/base/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum-with-null.schema/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts
index 0d0c447..67cc648 100644
--- a/base/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum-with-values.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts
index 368ac2b..3d7eb73 100644
--- a/base/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/enum.schema/default/TopLevel.ts
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts
index 8ea70f3..cea7a7f 100644
--- a/base/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/fractional-bounds.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
index fc206e1..18c06a9 100644
--- a/base/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts
index e07edf0..62ecbf8 100644
--- a/base/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts
index 29bc994..d496c7b 100644
--- a/base/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/id-no-address.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts
index 444933f..69718b7 100644
--- a/base/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/id-root.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts
index 9d2df90..ec8d8ef 100644
--- a/base/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/ie-suffix-singularization.schema/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts
index 9f7b670..bf6d536 100644
--- a/base/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/implicit-all-of.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts
index 887b34d..aca00b7 100644
--- a/base/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts
index 8345516..64f6edf 100644
--- a/base/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/implicit-one-of.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts
index 6e4d1cf..3428eab 100644
--- a/base/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-before-number.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts
index 30bbefd..d37525e 100644
--- a/base/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-float-union.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts
index f9a36b5..d866dcc 100644
--- a/base/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-string.schema/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts
index 54caffa..5fc61cc 100644
--- a/base/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/integer-type.schema/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts
index 2d9a3b2..24b54f7 100644
--- a/base/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/intersection-nested.schema/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts
index 29a519e..bb7e04c 100644
--- a/base/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/intersection.schema/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts
index 9f9b3d6..70ad9d6 100644
--- a/base/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/issue2680-top-level-array.schema/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 0dd79d6..ee382f8 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_dict" | "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" | "MarshalJSON" | "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" | "to_dict" | "transient" | "True" | "true" | "try" | "Type" | "type" | "typealias" | "typedef" | "typeid" | "typename" | "typeof" | "uint" | "ulong" | "unchecked" | "undefined" | "union" | "UnmarshalJSON" | "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_dict" | "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" | "makeDictEncoder" | "map" | "MarshalJSON" | "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" | "to_dict" | "transient" | "True" | "true" | "try" | "Type" | "type" | "typealias" | "typedef" | "typeid" | "typename" | "typeof" | "uint" | "ulong" | "unchecked" | "undefined" | "union" | "UnmarshalJSON" | "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
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -385,6 +385,7 @@ const typeMap: any = {
         "Locale",
         "lock",
         "long",
+        "makeDictEncoder",
         "map",
         "MarshalJSON",
         "MapEntry",
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 a405a51..a730e5c 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
@@ -190,6 +190,7 @@ export interface TopLevel {
     Locale?:                     UnionLocale;
     lock?:                       UnionLock;
     long?:                       UnionLong;
+    makeDictEncoder?:            UnionMakeDictEncoder;
     map?:                        UnionMap;
     MapEntry?:                   UnionMapEntry;
     MarshalJSON?:                UnionMarshalJSON;
@@ -784,6 +785,8 @@ export type UnionLock = object | number;
 
 export type UnionLong = object | number;
 
+export type UnionMakeDictEncoder = object | number;
+
 export type UnionMap = object | number;
 
 export type UnionMetadataPropertyHandling = object | number;
@@ -1134,7 +1137,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -1145,7 +1148,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -1408,6 +1411,7 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "lock", js: "lock", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "long", js: "long", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "map", js: "map", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "MapEntry", js: "MapEntry", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "MarshalJSON", js: "MarshalJSON", typ: u(undefined, u(m("any"), 3.14)) },
diff --git a/base/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts
index a84e1b1..0d4a93d 100644
--- a/base/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/light.schema/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts
index a3e9b2b..92968e7 100644
--- a/base/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/list.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts
index a88d16b..f32ee7c 100644
--- a/base/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/min-max-items.schema/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts
index 4d15bf4..38ea1e9 100644
--- a/base/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/minmax-integer.schema/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts
index 74eb204..382c552 100644
--- a/base/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/minmax.schema/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
index ce21e9c..e389dd2 100644
--- a/base/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/minmaxlength.schema/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts
index 2ac8eea..8467878 100644
--- a/base/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/multi-type-enum.schema/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts
index 332f39c..447c0f4 100644
--- a/base/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/mutually-recursive.schema/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts
index 8501247..e688320 100644
--- a/base/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/nested-intersection-union.schema/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts
index 9dd48da..f4b2d0b 100644
--- a/base/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/non-standard-ref.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts
index d59ca93..a97ff6f 100644
--- a/base/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts
index 8a93edc..ddfe1a6 100644
--- a/base/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/object-type-required.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts
index 21f335b..639c5c1 100644
--- a/base/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-any.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
index 1d6ca31..a0dc627 100644
--- a/base/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-const-ref.schema/default/TopLevel.ts
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
index 8cf1679..9fedd98 100644
--- a/base/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-constraints.schema/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
index c6d057f..27c7955 100644
--- a/base/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-date-time.schema/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts
index 0f2ad1e..ae1ddaf 100644
--- a/base/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-enum.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts
index 5d84647..a7d5b12 100644
--- a/base/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/optional-property.schema/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts
index f596bff..fcd4454 100644
--- a/base/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/pattern.schema/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts
index 34dfb4e..42b7441 100644
--- a/base/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/postman-collection.schema/default/TopLevel.ts
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -129,7 +129,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts
index ee2e5bf..7d62a6f 100644
--- a/base/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/prefix-items.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
index 3fc7608..357bc8c 100644
--- a/base/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts
index 4b340a1..6f262d0 100644
--- a/base/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/ref-id-files.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts
index a3e9b2b..92968e7 100644
--- a/base/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/ref-remote.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
index f2841a1..3fde61d 100644
--- a/base/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/renaming-bug.schema/default/TopLevel.ts
@@ -195,7 +195,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -206,7 +206,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts
index 5d752aa..d576a4d 100644
--- a/base/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/required-draft3.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts
index b5a3f4a..6684755 100644
--- a/base/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/required-non-properties.schema/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts
index 5d752aa..d576a4d 100644
--- a/base/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/required.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts
index b76a76b..708768a 100644
--- a/base/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
index 80dbe26..03e0bee 100644
--- a/base/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/schema-constraints.schema/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts
index a3e9b2b..92968e7 100644
--- a/base/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/simple-ref.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts
index 208356c..04e082f 100644
--- a/base/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/strict-optional.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts
index bfa6424..7fc1106 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-array.schema/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts
index 26d77b6..4f1e7f3 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-enum.schema/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts
index eb865a8..cafbb2e 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-primitive-array.schema/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts
index e37cbbe..1a5b401 100644
--- a/base/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/top-level-primitive.schema/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts
index d90f7f5..7cf3f1c 100644
--- a/base/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/tuple.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
index 90b3f3e..a0dc1d4 100644
--- a/base/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts
index 3da4931..717ebd4 100644
--- a/base/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/unicode-codepoint-length.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts
index bcd40b1..0eae11d 100644
--- a/base/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/union-int-double.schema/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts
index 3cfb51f..50f99f3 100644
--- a/base/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/union-list.schema/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts
index 1ba82fe..0d94449 100644
--- a/base/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/union.schema/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts
index 052065c..4ac6473 100644
--- a/base/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/uuid.schema/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
index 0ada8e0..b75e56c 100644
--- a/base/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
@@ -5956,7 +5956,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -5967,7 +5967,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/any.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/any.schema/default/TopLevel.ts
index 59760da..b08b84f 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/any.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/any.schema/default/TopLevel.ts
@@ -1,7 +1,25 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "foo": S.Any,
-    "values": S.Record({ key: S.String, value: S.Any}),
+    "values": mapSchema(S.Any),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/class-map-union.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
index 9541109..10a6489 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/class-map-union.schema/default/TopLevel.ts
@@ -1,10 +1,28 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class UnionClass extends S.Class<UnionClass>("UnionClass")({
     "quux": S.optional(S.Int),
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "union": S.optional(S.Record({ key: S.String, value: S.Union(S.Boolean, S.Number, S.String, UnionClass)})),
+    "union": S.optional(mapSchema(S.Union(S.Boolean, S.Number, S.String, UnionClass))),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
index e29de2c..67f2423 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/class-with-additional.schema/default/TopLevel.ts
@@ -1,6 +1,24 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "map": S.optional(S.Record({ key: S.String, value: S.Union(S.Boolean, S.Number)})),
+    "map": S.optional(mapSchema(S.Union(S.Boolean, S.Number))),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts
index ba1b7e6..b73d5e2 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts
@@ -1,11 +1,29 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Thing extends S.Class<Thing>("Thing")({
-    "optional": S.optional(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, S.Record({ key: S.String, value: S.Any}), S.String, S.Null)),
-    "required": S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, S.Record({ key: S.String, value: S.Any}), S.String, S.Null),
+    "optional": S.optional(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, mapSchema(S.Any), S.String, S.Null)),
+    "required": S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, mapSchema(S.Any), S.String, S.Null),
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "stuff": S.Record({ key: S.String, value: Thing}),
+    "stuff": mapSchema(Thing),
 }) {}
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/empty-object.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/empty-object.schema/default/TopLevel.ts
index 79eaa1d..10e0061 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/empty-object.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/empty-object.schema/default/TopLevel.ts
@@ -1,4 +1,22 @@
 import * as S from "effect/Schema";
 
-export const TopLevel = S.Record({ key: S.String, value: S.Any});
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
+export const TopLevel = mapSchema(S.Any);
 export type TopLevel = S.Schema.Type<typeof TopLevel>;
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
index 5069fce..5574ecc 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/go-schema-pattern-properties.schema/default/TopLevel.ts
@@ -1,6 +1,24 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "map": S.Record({ key: S.String, value: S.Int}),
+    "map": mapSchema(S.Int),
 }) {}
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 12d2acf..3fc5c01 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
@@ -182,6 +182,7 @@ export const Enum = S.Literal(
     "Locale",
     "lock",
     "long",
+    "makeDictEncoder",
     "map",
     "MarshalJSON",
     "MapEntry",
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 abf26b4..f88d6e6 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
@@ -499,6 +499,9 @@ export class MapEntry extends S.Class<MapEntry>("MapEntry")(S.Struct({}).pipe(S.
 export class Map extends S.Class<Map>("Map")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class MakeDictEncoder extends S.Class<MakeDictEncoder>("MakeDictEncoder")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Long extends S.Class<Long>("Long")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -1210,6 +1213,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "Locale": S.optional(S.Union(S.Number, Locale)),
     "lock": S.optional(S.Union(S.Number, Lock)),
     "long": S.optional(S.Union(S.Number, Long)),
+    "makeDictEncoder": S.optional(S.Union(S.Number, MakeDictEncoder)),
     "map": S.optional(S.Union(S.Number, Map)),
     "MapEntry": S.optional(S.Union(S.Number, MapEntry)),
     "MarshalJSON": S.optional(S.Union(S.Number, MarshalJson)),
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
index d4d744b..afb3bd6 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/recursive-union-flattening.schema/default/TopLevel.ts
@@ -1,13 +1,31 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class XClass extends S.Class<XClass>("XClass")({
-    "x": S.optional(S.Union(S.Array(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.String, S.suspend(() => XClass), S.Null)), S.Boolean, S.Number, S.Record({ key: S.String, value: S.Any}), S.String, S.Null)),
+    "x": S.optional(S.Union(S.Array(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.String, S.suspend(() => XClass), S.Null)), S.Boolean, S.Number, mapSchema(S.Any), S.String, S.Null)),
 }) {}
 
 export class TopLevelClass extends S.Class<TopLevelClass>("TopLevelClass")({
-    "x": S.optional(S.Union(S.Array(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.String, XClass, S.Null)), S.Boolean, S.Number, S.Record({ key: S.String, value: S.Any}), S.String, S.Null)),
+    "x": S.optional(S.Union(S.Array(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.String, XClass, S.Null)), S.Boolean, S.Number, mapSchema(S.Any), S.String, S.Null)),
 }) {}
 
-export const TopLevel = S.Union(S.Array(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.String, TopLevelClass, S.Null)), S.Boolean, S.Number, S.Int, S.Record({ key: S.String, value: S.Any}), S.String, S.Null);
+export const TopLevel = S.Union(S.Array(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.String, TopLevelClass, S.Null)), S.Boolean, S.Number, S.Int, mapSchema(S.Any), S.String, S.Null);
 export type TopLevel = S.Schema.Type<typeof TopLevel>;
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
index 44e46c9..aa53d66 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Item extends S.Class<Item>("Item")({
     "key": S.String,
@@ -12,7 +30,7 @@ export class ClosedClass extends S.Class<ClosedClass>("ClosedClass")(S.Struct({}
 export class Config extends S.Class<Config>("Config")({
     "closed": S.optional(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, S.String, ClosedClass, S.Null)),
     "name": S.optional(S.String),
-    "settings": S.optional(S.Record({ key: S.String, value: S.Array(Item)})),
+    "settings": S.optional(mapSchema(S.Array(Item))),
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/vega-lite.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
index 513d181..8a84b43 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 // Determines how size calculation should be performed, one of `"content"` or `"padding"`.
 // The default setting (`"content"`) interprets the width and height settings as the data
 // rectangle (plotting) dimensions, to which padding is then added. In contrast, the
@@ -642,7 +660,7 @@ export class Projection extends S.Class<Projection>("Projection")({
     "fraction": S.optional(S.Number),
     "lobes": S.optional(S.Number),
     "parallel": S.optional(S.Number),
-    "precision": S.optional(S.Record({ key: S.String, value: S.Union(S.Number, S.String)})),
+    "precision": S.optional(mapSchema(S.Union(S.Number, S.String))),
     "radius": S.optional(S.Number),
     "ratio": S.optional(S.Number),
     "rotate": S.optional(S.Array(S.Number)),
@@ -789,7 +807,7 @@ export class Header extends S.Class<Header>("Header")({
 }) {}
 
 export class SelectionDef extends S.Class<SelectionDef>("SelectionDef")({
-    "bind": S.optional(S.Union(BindEnum, S.Record({ key: S.String, value: S.suspend(() => VgBinding)}))),
+    "bind": S.optional(S.Union(BindEnum, mapSchema(S.suspend(() => VgBinding)))),
     "empty": S.optional(Empty),
     "encodings": S.optional(S.Array(SingleDefChannel)),
     "fields": S.optional(S.Array(S.String)),
@@ -989,7 +1007,7 @@ export class EncodingWithFacet extends S.Class<EncodingWithFacet>("EncodingWithF
 }) {}
 
 export class DataFormat extends S.Class<DataFormat>("DataFormat")({
-    "parse": S.optional(S.Union(ParseEnum, S.Record({ key: S.String, value: S.Any}))),
+    "parse": S.optional(S.Union(ParseEnum, mapSchema(S.Any))),
     "type": S.optional(DataFormatType),
     "property": S.optional(S.String),
     "feature": S.optional(S.String),
@@ -999,7 +1017,7 @@ export class DataFormat extends S.Class<DataFormat>("DataFormat")({
 export class Data extends S.Class<Data>("Data")({
     "format": S.optional(DataFormat),
     "url": S.optional(S.String),
-    "values": S.optional(S.Union(S.Array(S.Union(S.Boolean, S.Number, S.Record({ key: S.String, value: S.Any}), S.String)), S.Record({ key: S.String, value: S.Any}), S.String)),
+    "values": S.optional(S.Union(S.Array(S.Union(S.Boolean, S.Number, mapSchema(S.Any), S.String)), mapSchema(S.Any), S.String)),
     "name": S.optional(S.String),
 }) {}
 
@@ -1139,7 +1157,7 @@ export class VgBinding extends S.Class<VgBinding>("VgBinding")({
 }) {}
 
 export class SingleSelectionConfig extends S.Class<SingleSelectionConfig>("SingleSelectionConfig")({
-    "bind": S.optional(S.Record({ key: S.String, value: VgBinding})),
+    "bind": S.optional(mapSchema(VgBinding)),
     "empty": S.optional(Empty),
     "encodings": S.optional(S.Array(SingleDefChannel)),
     "fields": S.optional(S.Array(S.String)),
@@ -1237,7 +1255,7 @@ export class ProjectionConfig extends S.Class<ProjectionConfig>("ProjectionConfi
     "fraction": S.optional(S.Number),
     "lobes": S.optional(S.Number),
     "parallel": S.optional(S.Number),
-    "precision": S.optional(S.Record({ key: S.String, value: S.Union(S.Number, S.String)})),
+    "precision": S.optional(mapSchema(S.Union(S.Number, S.String))),
     "radius": S.optional(S.Number),
     "ratio": S.optional(S.Number),
     "rotate": S.optional(S.Array(S.Number)),
@@ -1474,14 +1492,14 @@ export class Config extends S.Class<Config>("Config")({
     "padding": S.optional(S.Union(S.Number, PaddingClass)),
     "point": S.optional(MarkConfig),
     "projection": S.optional(ProjectionConfig),
-    "range": S.optional(S.Record({ key: S.String, value: S.Union(S.Array(S.Union(S.Number, S.String)), VgScheme)})),
+    "range": S.optional(mapSchema(S.Union(S.Array(S.Union(S.Number, S.String)), VgScheme))),
     "rect": S.optional(MarkConfig),
     "rule": S.optional(MarkConfig),
     "scale": S.optional(ScaleConfig),
     "selection": S.optional(SelectionConfig),
     "square": S.optional(MarkConfig),
     "stack": S.optional(StackOffset),
-    "style": S.optional(S.Record({ key: S.String, value: VgMarkConfig})),
+    "style": S.optional(mapSchema(VgMarkConfig)),
     "text": S.optional(TextConfig),
     "tick": S.optional(TickConfig),
     "timeFormat": S.optional(S.String),
@@ -1524,7 +1542,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "name": S.optional(S.String),
     "padding": S.optional(S.Union(S.Number, PaddingClass)),
     "projection": S.optional(Projection),
-    "selection": S.optional(S.Record({ key: S.String, value: SelectionDef})),
+    "selection": S.optional(mapSchema(SelectionDef)),
     "title": S.optional(S.Union(S.String, TitleParams)),
     "transform": S.optional(S.Array(Transform)),
     "width": S.optional(S.Number),
@@ -1550,7 +1568,7 @@ export class Spec extends S.Class<Spec>("Spec")({
     "encoding": S.optional(Encoding),
     "mark": S.optional(S.Union(Mark, MarkDef)),
     "projection": S.optional(Projection),
-    "selection": S.optional(S.Record({ key: S.String, value: SelectionDef})),
+    "selection": S.optional(mapSchema(SelectionDef)),
     "facet": S.optional(FacetMapping),
     "spec": S.optional(S.suspend(() => Spec)),
     "repeat": S.optional(Repeat),
@@ -1571,5 +1589,5 @@ export class LayerSpec extends S.Class<LayerSpec>("LayerSpec")({
     "encoding": S.optional(Encoding),
     "mark": S.optional(S.Union(Mark, MarkDef)),
     "projection": S.optional(Projection),
-    "selection": S.optional(S.Record({ key: S.String, value: SelectionDef})),
+    "selection": S.optional(mapSchema(SelectionDef)),
 }) {}
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 84b7d91..0fc1194 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
@@ -182,6 +182,7 @@ export const EnumSchema = z.enum([
     "Locale",
     "lock",
     "long",
+    "makeDictEncoder",
     "map",
     "MarshalJSON",
     "MapEntry",
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 43bb528..9975fca 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
@@ -705,6 +705,10 @@ export const LongSchema = z.object({
 });
 export type Long = z.infer<typeof LongSchema>;
 
+export const MakeDictEncoderSchema = z.object({
+});
+export type MakeDictEncoder = z.infer<typeof MakeDictEncoderSchema>;
+
 export const MapSchema = z.object({
 });
 export type Map = z.infer<typeof MapSchema>;
@@ -1552,6 +1556,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "Locale": z.union([LocaleSchema, z.number()]).optional(),
     "lock": z.union([LockSchema, z.number()]).optional(),
     "long": z.union([LongSchema, z.number()]).optional(),
+    "makeDictEncoder": z.union([MakeDictEncoderSchema, z.number()]).optional(),
     "map": z.union([MapSchema, z.number()]).optional(),
     "MapEntry": z.union([MapEntrySchema, z.number()]).optional(),
     "MarshalJSON": z.union([MarshalJsonSchema, 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 7bbce26..a3b312e 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
@@ -6351,6 +6351,7 @@ struct Obj3: Codable {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let makeDictEncoder: MakeDictEncoder
     let map: Map
     let mapEntry: MapEntry
     let marshalJSON: MarshalJSON
@@ -6361,7 +6362,6 @@ struct Obj3: Codable {
     let native: Native
     let new: New
     let newtonsoft: Newtonsoft
-    let no: No
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -6377,7 +6377,6 @@ struct Obj3: Codable {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -6419,6 +6418,7 @@ struct Obj3: Codable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case makeDictEncoder = "makeDictEncoder"
         case map = "map"
         case mapEntry = "MapEntry"
         case marshalJSON = "MarshalJSON"
@@ -6429,7 +6429,6 @@ struct Obj3: Codable {
         case native = "native"
         case new = "new"
         case newtonsoft = "newtonsoft"
-        case no = "NO"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -6445,7 +6444,6 @@ struct Obj3: Codable {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 }
 
@@ -6507,6 +6505,7 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        makeDictEncoder: MakeDictEncoder? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         marshalJSON: MarshalJSON? = nil,
@@ -6517,7 +6516,6 @@ extension Obj3 {
         native: Native? = nil,
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -6532,8 +6530,7 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
@@ -6575,6 +6572,7 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             marshalJSON: marshalJSON ?? self.marshalJSON,
@@ -6585,7 +6583,6 @@ extension Obj3 {
             native: native ?? self.native,
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -6600,8 +6597,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -8286,6 +8282,50 @@ extension Long {
     }
 }
 
+// MARK: - MakeDictEncoder
+struct MakeDictEncoder: Codable {
+    let makeDictEncoder: Int
+
+    enum CodingKeys: String, CodingKey {
+        case makeDictEncoder = "makeDictEncoder"
+    }
+}
+
+// MARK: MakeDictEncoder convenience initializers and mutators
+
+extension MakeDictEncoder {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(MakeDictEncoder.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(
+        makeDictEncoder: Int? = nil
+    ) -> MakeDictEncoder {
+        return MakeDictEncoder(
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Map
 struct Map: Codable {
     let map: Int
@@ -8726,50 +8766,6 @@ extension Newtonsoft {
     }
 }
 
-// MARK: - No
-struct No: Codable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(No.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Guard
 struct Guard: Codable {
     let guardGuard: Int
@@ -9430,53 +9426,10 @@ extension Mutating {
     }
 }
 
-// MARK: - Nil
-struct Nil: Codable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nil.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj4
 struct Obj4: Codable {
     let dummy: Int
+    let no: No
     let noSuchMethod: NoSuchMethod
     let noexcept: Noexcept
     let nonatomic: Nonatomic
@@ -9490,6 +9443,7 @@ struct Obj4: Codable {
     let null: Null
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -9539,11 +9493,10 @@ struct Obj4: Codable {
     let runtimeType: RuntimeType
     let s: S
     let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
         case noexcept = "noexcept"
         case nonatomic = "nonatomic"
@@ -9557,6 +9510,7 @@ struct Obj4: Codable {
         case null = "NULL"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -9606,8 +9560,6 @@ struct Obj4: Codable {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
     }
 }
 
@@ -9631,6 +9583,7 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
         noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
@@ -9644,6 +9597,7 @@ extension Obj4 {
         null: Null? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -9692,12 +9646,11 @@ extension Obj4 {
         retain: Retain? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
             noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
@@ -9711,6 +9664,7 @@ extension Obj4 {
             null: null ?? self.null,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -9759,9 +9713,51 @@ 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
+            sbyte: sbyte ?? self.sbyte
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - No
+struct No: Codable {
+    let no: Int
+
+    enum CodingKeys: String, CodingKey {
+        case no = "NO"
+    }
+}
+
+// MARK: No convenience initializers and mutators
+
+extension No {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(No.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -10346,6 +10342,50 @@ extension Number {
     }
 }
 
+// MARK: - Nil
+struct Nil: Codable {
+    let nilNil: Int
+
+    enum CodingKeys: String, CodingKey {
+        case nilNil = "nil"
+    }
+}
+
+// MARK: Nil convenience initializers and mutators
+
+extension Nil {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Nil.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - NoneClass
 struct NoneClass: Codable {
     let none: Int
@@ -12502,94 +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: - Obj5
 struct Obj5: Codable {
     let dummy: Int
@@ -12607,10 +12559,11 @@ struct Obj5: Codable {
     let obj5Try: Try
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
     let select: Select
     let sendable: Sendable
     let serialDescriptor: SerialDescriptor
@@ -12656,8 +12609,6 @@ struct Obj5: Codable {
     let undefined: Undefined
     let union: Union
     let unmarshalJSON: UnmarshalJSON
-    let unsafe: Unsafe
-    let useSerializers: UseSerializers
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -12675,10 +12626,11 @@ struct Obj5: Codable {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
         case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
@@ -12724,8 +12676,6 @@ struct Obj5: Codable {
         case undefined = "undefined"
         case union = "union"
         case unmarshalJSON = "UnmarshalJSON"
-        case unsafe = "unsafe"
-        case useSerializers = "UseSerializers"
     }
 }
 
@@ -12763,10 +12713,11 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
         select: Select? = nil,
         sendable: Sendable? = nil,
         serialDescriptor: SerialDescriptor? = nil,
@@ -12811,9 +12762,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unmarshalJSON: UnmarshalJSON? = nil,
-        unsafe: Unsafe? = nil,
-        useSerializers: UseSerializers? = nil
+        unmarshalJSON: UnmarshalJSON? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -12831,10 +12780,11 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
             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,
@@ -12879,9 +12829,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON,
-            unsafe: unsafe ?? self.unsafe,
-            useSerializers: useSerializers ?? self.useSerializers
+            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON
         )
     }
 
@@ -13510,50 +13458,6 @@ extension Typealias {
     }
 }
 
-// MARK: - Unowned
-struct Unowned: Codable {
-    let unownedUnowned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
-    }
-}
-
-// MARK: Unowned convenience initializers and mutators
-
-extension Unowned {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unowned.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(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
-        )
-    }
-
-    func 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: - PrimitiveKind
 struct PrimitiveKind: Codable {
     let primitiveKind: Int
@@ -13686,6 +13590,94 @@ 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
@@ -15666,103 +15658,18 @@ extension UnmarshalJSON {
     }
 }
 
-// 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: - UseSerializers
-struct UseSerializers: Codable {
-    let useSerializers: Int
-
-    enum CodingKeys: String, CodingKey {
-        case useSerializers = "UseSerializers"
-    }
-}
-
-// MARK: UseSerializers convenience initializers and mutators
-
-extension UseSerializers {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        useSerializers: Int? = nil
-    ) -> UseSerializers {
-        return UseSerializers(
-            useSerializers: useSerializers ?? self.useSerializers
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj6
 struct Obj6: Codable {
     let dummy: Int
+    let obj6Unowned: Unowned
     let obj6Var: Var
     let obj6Weak: Weak
     let obj6Where: Where
     let obj6While: While
     let obj6WillSet: WillSet
+    let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
     let using: Using
     let utf8JSONReader: Utf8JSONReader
@@ -15780,12 +15687,15 @@ struct Obj6: Codable {
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case obj6Unowned = "unowned"
         case obj6Var = "var"
         case obj6Weak = "weak"
         case obj6Where = "where"
         case obj6While = "while"
         case obj6WillSet = "willSet"
+        case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
         case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
@@ -15823,12 +15733,15 @@ extension Obj6 {
 
     func with(
         dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
         obj6Var: Var? = nil,
         obj6Weak: Weak? = nil,
         obj6Where: Where? = nil,
         obj6While: While? = nil,
         obj6WillSet: WillSet? = nil,
+        unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
+        useSerializers: UseSerializers? = nil,
         ushort: Ushort? = nil,
         using: Using? = nil,
         utf8JSONReader: Utf8JSONReader? = nil,
@@ -15846,12 +15759,15 @@ extension Obj6 {
     ) -> Obj6 {
         return Obj6(
             dummy: dummy ?? self.dummy,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
             obj6Var: obj6Var ?? self.obj6Var,
             obj6Weak: obj6Weak ?? self.obj6Weak,
             obj6Where: obj6Where ?? self.obj6Where,
             obj6While: obj6While ?? self.obj6While,
             obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
+            useSerializers: useSerializers ?? self.useSerializers,
             ushort: ushort ?? self.ushort,
             using: using ?? self.using,
             utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
@@ -15878,6 +15794,50 @@ extension Obj6 {
     }
 }
 
+// MARK: - Unowned
+struct Unowned: Codable {
+    let unownedUnowned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unownedUnowned = "unowned"
+    }
+}
+
+// MARK: Unowned convenience initializers and mutators
+
+extension Unowned {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unowned.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(
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        )
+    }
+
+    func 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: - Var
 struct Var: Codable {
     let varVar: Int
@@ -16098,6 +16058,50 @@ 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
@@ -16142,6 +16146,50 @@ extension Unsigned {
     }
 }
 
+// MARK: - UseSerializers
+struct UseSerializers: Codable {
+    let useSerializers: Int
+
+    enum CodingKeys: String, CodingKey {
+        case useSerializers = "UseSerializers"
+    }
+}
+
+// MARK: UseSerializers convenience initializers and mutators
+
+extension UseSerializers {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Ushort
 struct Ushort: Codable {
     let ushort: 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 f67bb25..280b53b 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
@@ -7140,6 +7140,7 @@ extension FalseClass {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let makeDictEncoder: MakeDictEncoder
     let map: Map
     let mapEntry: MapEntry
     let marshalJSON: MarshalJSON
@@ -7150,7 +7151,6 @@ extension FalseClass {
     let native: Native
     let new: New
     let newtonsoft: Newtonsoft
-    let no: No
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -7166,7 +7166,6 @@ extension FalseClass {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -7208,6 +7207,7 @@ extension FalseClass {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case makeDictEncoder = "makeDictEncoder"
         case map = "map"
         case mapEntry = "MapEntry"
         case marshalJSON = "MarshalJSON"
@@ -7218,7 +7218,6 @@ extension FalseClass {
         case native = "native"
         case new = "new"
         case newtonsoft = "newtonsoft"
-        case no = "NO"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -7234,10 +7233,9 @@ extension FalseClass {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 
-    init(dummy: Int, goto: Goto, 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, marshalJSON: MarshalJSON, 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) {
+    init(dummy: Int, goto: Goto, 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, makeDictEncoder: MakeDictEncoder, map: Map, mapEntry: MapEntry, marshalJSON: MarshalJSON, metadataPropertyHandling: MetadataPropertyHandling, module: Module, mutable: Mutable, namespace: Namespace, native: Native, new: New, newtonsoft: Newtonsoft, obj3Guard: Guard, obj3If: If, obj3Import: Import, obj3In: In, obj3Indirect: Indirect, obj3Infix: Infix, obj3Init: Init, obj3Inout: Inout, obj3Internal: Internal, obj3Is: Is, obj3JSON: JSON, obj3Lazy: Lazy, obj3Left: Left, obj3Let: Let, obj3Mutating: Mutating) {
         self.dummy = dummy
         self.goto = goto
         self.hasOwnProperty = hasOwnProperty
@@ -7277,6 +7275,7 @@ extension FalseClass {
         self.locale = locale
         self.lock = lock
         self.long = long
+        self.makeDictEncoder = makeDictEncoder
         self.map = map
         self.mapEntry = mapEntry
         self.marshalJSON = marshalJSON
@@ -7287,7 +7286,6 @@ extension FalseClass {
         self.native = native
         self.new = new
         self.newtonsoft = newtonsoft
-        self.no = no
         self.obj3Guard = obj3Guard
         self.obj3If = obj3If
         self.obj3Import = obj3Import
@@ -7303,7 +7301,6 @@ extension FalseClass {
         self.obj3Left = obj3Left
         self.obj3Let = obj3Let
         self.obj3Mutating = obj3Mutating
-        self.obj3Nil = obj3Nil
     }
 }
 
@@ -7312,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, goto: me.goto, hasOwnProperty: me.hasOwnProperty, hashCode: me.hashCode, hashable: me.hashable, hasher: me.hasher, id: me.id, imp: me.imp, implements: me.implements, implicit: me.implicit, inline: me.inline, instanceof: me.instanceof, int: me.int, 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, marshalJSON: me.marshalJSON, 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)
+        self.init(dummy: me.dummy, goto: me.goto, hasOwnProperty: me.hasOwnProperty, hashCode: me.hashCode, hashable: me.hashable, hasher: me.hasher, id: me.id, imp: me.imp, implements: me.implements, implicit: me.implicit, inline: me.inline, instanceof: me.instanceof, int: me.int, 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, makeDictEncoder: me.makeDictEncoder, map: me.map, mapEntry: me.mapEntry, marshalJSON: me.marshalJSON, metadataPropertyHandling: me.metadataPropertyHandling, module: me.module, mutable: me.mutable, namespace: me.namespace, native: me.native, new: me.new, newtonsoft: me.newtonsoft, obj3Guard: me.obj3Guard, obj3If: me.obj3If, obj3Import: me.obj3Import, obj3In: me.obj3In, obj3Indirect: me.obj3Indirect, obj3Infix: me.obj3Infix, obj3Init: me.obj3Init, obj3Inout: me.obj3Inout, obj3Internal: me.obj3Internal, obj3Is: me.obj3Is, obj3JSON: me.obj3JSON, obj3Lazy: me.obj3Lazy, obj3Left: me.obj3Left, obj3Let: me.obj3Let, obj3Mutating: me.obj3Mutating)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -7366,6 +7363,7 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        makeDictEncoder: MakeDictEncoder? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         marshalJSON: MarshalJSON? = nil,
@@ -7376,7 +7374,6 @@ extension Obj3 {
         native: Native? = nil,
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -7391,8 +7388,7 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
@@ -7434,6 +7430,7 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             marshalJSON: marshalJSON ?? self.marshalJSON,
@@ -7444,7 +7441,6 @@ extension Obj3 {
             native: native ?? self.native,
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -7459,8 +7455,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -9335,6 +9330,55 @@ extension Long {
     }
 }
 
+// MARK: - MakeDictEncoder
+@objcMembers class MakeDictEncoder: NSObject, Codable {
+    let makeDictEncoder: Int
+
+    enum CodingKeys: String, CodingKey {
+        case makeDictEncoder = "makeDictEncoder"
+    }
+
+    init(makeDictEncoder: Int) {
+        self.makeDictEncoder = makeDictEncoder
+    }
+}
+
+// MARK: MakeDictEncoder convenience initializers and mutators
+
+extension MakeDictEncoder {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(MakeDictEncoder.self, from: data)
+        self.init(makeDictEncoder: me.makeDictEncoder)
+    }
+
+    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(
+        makeDictEncoder: Int? = nil
+    ) -> MakeDictEncoder {
+        return MakeDictEncoder(
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Map
 @objcMembers class Map: NSObject, Codable {
     let map: Int
@@ -9825,55 +9869,6 @@ extension Newtonsoft {
     }
 }
 
-// MARK: - No
-@objcMembers class No: NSObject, Codable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-
-    init(no: Int) {
-        self.no = no
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(No.self, from: data)
-        self.init(no: me.no)
-    }
-
-    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    convenience init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Guard
 @objcMembers class Guard: NSObject, Codable {
     let guardGuard: Int
@@ -10609,58 +10604,10 @@ extension Mutating {
     }
 }
 
-// MARK: - Nil
-@objcMembers class Nil: NSObject, Codable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-
-    init(nilNil: Int) {
-        self.nilNil = nilNil
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Nil.self, from: data)
-        self.init(nilNil: me.nilNil)
-    }
-
-    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    convenience init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj4
 @objcMembers class Obj4: NSObject, Codable {
     let dummy: Int
+    let no: No
     let noSuchMethod: NoSuchMethod
     let noexcept: Noexcept
     let nonatomic: Nonatomic
@@ -10674,6 +10621,7 @@ extension Nil {
     let null: Null
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -10723,11 +10671,10 @@ extension Nil {
     let runtimeType: RuntimeType
     let s: S
     let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
         case noexcept = "noexcept"
         case nonatomic = "nonatomic"
@@ -10741,6 +10688,7 @@ extension Nil {
         case null = "NULL"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -10790,12 +10738,11 @@ extension Nil {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
     }
 
-    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, 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) {
+    init(dummy: Int, no: No, 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, obj4Nil: Nil, obj4None: NoneClass, obj4Nonmutating: Nonmutating, obj4Null: NullClass, obj4Open: Open, obj4Operator: Operator, obj4Optional: Optional, obj4Override: Override, obj4Postfix: Postfix, obj4Precedence: Precedence, obj4Prefix: Prefix, obj4Private: Private, obj4Protocol: ProtocolClass, obj4Public: Public, obj4Repeat: Repeat, obj4Required: Required, obj4Retain: Retain, obj4Rethrows: Rethrows, 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) {
         self.dummy = dummy
+        self.no = no
         self.noSuchMethod = noSuchMethod
         self.noexcept = noexcept
         self.nonatomic = nonatomic
@@ -10809,6 +10756,7 @@ extension Nil {
         self.null = null
         self.nullptr = nullptr
         self.number = number
+        self.obj4Nil = obj4Nil
         self.obj4None = obj4None
         self.obj4Nonmutating = obj4Nonmutating
         self.obj4Null = obj4Null
@@ -10858,8 +10806,6 @@ extension Nil {
         self.runtimeType = runtimeType
         self.s = s
         self.sbyte = sbyte
-        self.sealed = sealed
-        self.sel = sel
     }
 }
 
@@ -10868,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, 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, 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)
+        self.init(dummy: me.dummy, no: me.no, noSuchMethod: me.noSuchMethod, noexcept: me.noexcept, nonatomic: me.nonatomic, none: me.none, nonlocal: me.nonlocal, not: me.not, notEq: me.notEq, nsError: me.nsError, nsObject: me.nsObject, nsString: me.nsString, null: me.null, nullptr: me.nullptr, number: me.number, obj4Nil: me.obj4Nil, obj4None: me.obj4None, obj4Nonmutating: me.obj4Nonmutating, obj4Null: me.obj4Null, obj4Open: me.obj4Open, obj4Operator: me.obj4Operator, obj4Optional: me.obj4Optional, obj4Override: me.obj4Override, obj4Postfix: me.obj4Postfix, obj4Precedence: me.obj4Precedence, obj4Prefix: me.obj4Prefix, obj4Private: me.obj4Private, obj4Protocol: me.obj4Protocol, obj4Public: me.obj4Public, obj4Repeat: me.obj4Repeat, obj4Required: me.obj4Required, obj4Retain: me.obj4Retain, obj4Rethrows: me.obj4Rethrows, 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)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10884,6 +10830,7 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
         noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
@@ -10897,6 +10844,7 @@ extension Obj4 {
         null: Null? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -10945,12 +10893,11 @@ extension Obj4 {
         restrict: Restrict? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
             noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
@@ -10964,6 +10911,7 @@ extension Obj4 {
             null: null ?? self.null,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -11012,9 +10960,56 @@ 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
+            sbyte: sbyte ?? self.sbyte
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - No
+@objcMembers class No: NSObject, Codable {
+    let no: Int
+
+    enum CodingKeys: String, CodingKey {
+        case no = "NO"
+    }
+
+    init(no: Int) {
+        self.no = no
+    }
+}
+
+// MARK: No convenience initializers and mutators
+
+extension No {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(No.self, from: data)
+        self.init(no: me.no)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -11664,6 +11659,55 @@ extension Number {
     }
 }
 
+// MARK: - Nil
+@objcMembers class Nil: NSObject, Codable {
+    let nilNil: Int
+
+    enum CodingKeys: String, CodingKey {
+        case nilNil = "nil"
+    }
+
+    init(nilNil: Int) {
+        self.nilNil = nilNil
+    }
+}
+
+// MARK: Nil convenience initializers and mutators
+
+extension Nil {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Nil.self, from: data)
+        self.init(nilNil: me.nilNil)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - NoneClass
 @objcMembers class NoneClass: NSObject, Codable {
     let none: Int
@@ -14065,104 +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: - Obj5
 @objcMembers class Obj5: NSObject, Codable {
     let dummy: Int
@@ -14180,10 +14126,11 @@ extension Sel {
     let obj5Try: Try
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
     let select: Select
     let sendable: Sendable
     let serialDescriptor: SerialDescriptor
@@ -14229,8 +14176,6 @@ extension Sel {
     let undefined: Undefined
     let union: Union
     let unmarshalJSON: UnmarshalJSON
-    let unsafe: Unsafe
-    let useSerializers: UseSerializers
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -14248,10 +14193,11 @@ extension Sel {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
         case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
@@ -14297,11 +14243,9 @@ extension Sel {
         case undefined = "undefined"
         case union = "union"
         case unmarshalJSON = "UnmarshalJSON"
-        case unsafe = "unsafe"
-        case useSerializers = "UseSerializers"
     }
 
-    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, 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, toDict: ToDict, 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, unmarshalJSON: UnmarshalJSON, unsafe: Unsafe, useSerializers: UseSerializers) {
+    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, 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, toDict: ToDict, 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, unmarshalJSON: UnmarshalJSON) {
         self.dummy = dummy
         self.kSerializer = kSerializer
         self.obj5Self = obj5Self
@@ -14317,10 +14261,11 @@ extension Sel {
         self.obj5Try = obj5Try
         self.obj5Type = obj5Type
         self.obj5Typealias = obj5Typealias
-        self.obj5Unowned = obj5Unowned
         self.primitiveKind = primitiveKind
         self.purpleSelf = purpleSelf
         self.purpleTrue = purpleTrue
+        self.sealed = sealed
+        self.sel = sel
         self.select = select
         self.sendable = sendable
         self.serialDescriptor = serialDescriptor
@@ -14366,8 +14311,6 @@ extension Sel {
         self.undefined = undefined
         self.union = union
         self.unmarshalJSON = unmarshalJSON
-        self.unsafe = unsafe
-        self.useSerializers = useSerializers
     }
 }
 
@@ -14376,7 +14319,7 @@ extension Sel {
 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, 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, toDict: me.toDict, 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, unmarshalJSON: me.unmarshalJSON, unsafe: me.unsafe, useSerializers: me.useSerializers)
+        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, 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, toDict: me.toDict, 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, unmarshalJSON: me.unmarshalJSON)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14406,10 +14349,11 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
         select: Select? = nil,
         sendable: Sendable? = nil,
         serialDescriptor: SerialDescriptor? = nil,
@@ -14454,9 +14398,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unmarshalJSON: UnmarshalJSON? = nil,
-        unsafe: Unsafe? = nil,
-        useSerializers: UseSerializers? = nil
+        unmarshalJSON: UnmarshalJSON? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -14474,10 +14416,11 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
             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,
@@ -14522,9 +14465,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON,
-            unsafe: unsafe ?? self.unsafe,
-            useSerializers: useSerializers ?? self.useSerializers
+            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON
         )
     }
 
@@ -15223,55 +15164,6 @@ extension Typealias {
     }
 }
 
-// MARK: - Unowned
-@objcMembers class Unowned: NSObject, Codable {
-    let unownedUnowned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
-    }
-
-    init(unownedUnowned: Int) {
-        self.unownedUnowned = unownedUnowned
-    }
-}
-
-// MARK: Unowned convenience initializers and mutators
-
-extension Unowned {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Unowned.self, from: data)
-        self.init(unownedUnowned: me.unownedUnowned)
-    }
-
-    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(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
-        )
-    }
-
-    func 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: - PrimitiveKind
 @objcMembers class PrimitiveKind: NSObject, Codable {
     let primitiveKind: Int
@@ -15419,6 +15311,104 @@ extension TrueClass {
     }
 }
 
+// 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
@@ -17624,113 +17614,18 @@ extension UnmarshalJSON {
     }
 }
 
-// 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: - UseSerializers
-@objcMembers class UseSerializers: NSObject, Codable {
-    let useSerializers: Int
-
-    enum CodingKeys: String, CodingKey {
-        case useSerializers = "UseSerializers"
-    }
-
-    init(useSerializers: Int) {
-        self.useSerializers = useSerializers
-    }
-}
-
-// MARK: UseSerializers convenience initializers and mutators
-
-extension UseSerializers {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(UseSerializers.self, from: data)
-        self.init(useSerializers: me.useSerializers)
-    }
-
-    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(
-        useSerializers: Int? = nil
-    ) -> UseSerializers {
-        return UseSerializers(
-            useSerializers: useSerializers ?? self.useSerializers
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj6
 @objcMembers class Obj6: NSObject, Codable {
     let dummy: Int
+    let obj6Unowned: Unowned
     let obj6Var: Var
     let obj6Weak: Weak
     let obj6Where: Where
     let obj6While: While
     let obj6WillSet: WillSet
+    let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
     let using: Using
     let utf8JSONReader: Utf8JSONReader
@@ -17748,12 +17643,15 @@ extension UseSerializers {
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case obj6Unowned = "unowned"
         case obj6Var = "var"
         case obj6Weak = "weak"
         case obj6Where = "where"
         case obj6While = "while"
         case obj6WillSet = "willSet"
+        case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
         case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
@@ -17770,14 +17668,17 @@ extension UseSerializers {
         case yield = "yield"
     }
 
-    init(dummy: Int, obj6Var: Var, obj6Weak: Weak, obj6Where: Where, obj6While: While, obj6WillSet: WillSet, 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) {
+    init(dummy: Int, obj6Unowned: Unowned, obj6Var: Var, obj6Weak: Weak, obj6Where: Where, obj6While: While, obj6WillSet: WillSet, unsafe: Unsafe, unsigned: Unsigned, useSerializers: UseSerializers, ushort: Ushort, using: Using, utf8JSONReader: Utf8JSONReader, utf8JSONWriter: Utf8JSONWriter, uuid: UUIDClass, virtual: Virtual, void: Void, volatile: Volatile, wcharT: WcharT, with: With, xor: Xor, xorEq: XorEq, yes: Yes, yield: Yield) {
         self.dummy = dummy
+        self.obj6Unowned = obj6Unowned
         self.obj6Var = obj6Var
         self.obj6Weak = obj6Weak
         self.obj6Where = obj6Where
         self.obj6While = obj6While
         self.obj6WillSet = obj6WillSet
+        self.unsafe = unsafe
         self.unsigned = unsigned
+        self.useSerializers = useSerializers
         self.ushort = ushort
         self.using = using
         self.utf8JSONReader = utf8JSONReader
@@ -17800,7 +17701,7 @@ extension UseSerializers {
 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, 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)
+        self.init(dummy: me.dummy, obj6Unowned: me.obj6Unowned, obj6Var: me.obj6Var, obj6Weak: me.obj6Weak, obj6Where: me.obj6Where, obj6While: me.obj6While, obj6WillSet: me.obj6WillSet, unsafe: me.unsafe, unsigned: me.unsigned, useSerializers: me.useSerializers, 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 {
@@ -17816,12 +17717,15 @@ extension Obj6 {
 
     func with(
         dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
         obj6Var: Var? = nil,
         obj6Weak: Weak? = nil,
         obj6Where: Where? = nil,
         obj6While: While? = nil,
         obj6WillSet: WillSet? = nil,
+        unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
+        useSerializers: UseSerializers? = nil,
         ushort: Ushort? = nil,
         using: Using? = nil,
         utf8JSONReader: Utf8JSONReader? = nil,
@@ -17839,12 +17743,15 @@ extension Obj6 {
     ) -> Obj6 {
         return Obj6(
             dummy: dummy ?? self.dummy,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
             obj6Var: obj6Var ?? self.obj6Var,
             obj6Weak: obj6Weak ?? self.obj6Weak,
             obj6Where: obj6Where ?? self.obj6Where,
             obj6While: obj6While ?? self.obj6While,
             obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
+            useSerializers: useSerializers ?? self.useSerializers,
             ushort: ushort ?? self.ushort,
             using: using ?? self.using,
             utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
@@ -17871,6 +17778,55 @@ extension Obj6 {
     }
 }
 
+// MARK: - Unowned
+@objcMembers class Unowned: NSObject, Codable {
+    let unownedUnowned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unownedUnowned = "unowned"
+    }
+
+    init(unownedUnowned: Int) {
+        self.unownedUnowned = unownedUnowned
+    }
+}
+
+// MARK: Unowned convenience initializers and mutators
+
+extension Unowned {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Unowned.self, from: data)
+        self.init(unownedUnowned: me.unownedUnowned)
+    }
+
+    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(
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        )
+    }
+
+    func 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: - Var
 @objcMembers class Var: NSObject, Codable {
     let varVar: Int
@@ -18116,6 +18072,55 @@ 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
@@ -18165,6 +18170,55 @@ extension Unsigned {
     }
 }
 
+// MARK: - UseSerializers
+@objcMembers class UseSerializers: NSObject, Codable {
+    let useSerializers: Int
+
+    enum CodingKeys: String, CodingKey {
+        case useSerializers = "UseSerializers"
+    }
+
+    init(useSerializers: Int) {
+        self.useSerializers = useSerializers
+    }
+}
+
+// MARK: UseSerializers convenience initializers and mutators
+
+extension UseSerializers {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(UseSerializers.self, from: data)
+        self.init(useSerializers: me.useSerializers)
+    }
+
+    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(
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Ushort
 @objcMembers class Ushort: NSObject, Codable {
     let ushort: 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 97ff92d..2b18da8 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
@@ -7143,6 +7143,7 @@ struct Obj3: Codable, Equatable {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let makeDictEncoder: MakeDictEncoder
     let map: Map
     let mapEntry: MapEntry
     let marshalJSON: MarshalJSON
@@ -7153,7 +7154,6 @@ struct Obj3: Codable, Equatable {
     let native: Native
     let new: New
     let newtonsoft: Newtonsoft
-    let no: No
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -7169,7 +7169,6 @@ struct Obj3: Codable, Equatable {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -7211,6 +7210,7 @@ struct Obj3: Codable, Equatable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case makeDictEncoder = "makeDictEncoder"
         case map = "map"
         case mapEntry = "MapEntry"
         case marshalJSON = "MarshalJSON"
@@ -7221,7 +7221,6 @@ struct Obj3: Codable, Equatable {
         case native = "native"
         case new = "new"
         case newtonsoft = "newtonsoft"
-        case no = "NO"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -7237,7 +7236,6 @@ struct Obj3: Codable, Equatable {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 }
 
@@ -7299,6 +7297,7 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        makeDictEncoder: MakeDictEncoder? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         marshalJSON: MarshalJSON? = nil,
@@ -7309,7 +7308,6 @@ extension Obj3 {
         native: Native? = nil,
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -7324,8 +7322,7 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
@@ -7367,6 +7364,7 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             marshalJSON: marshalJSON ?? self.marshalJSON,
@@ -7377,7 +7375,6 @@ extension Obj3 {
             native: native ?? self.native,
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -7392,8 +7389,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -9312,6 +9308,56 @@ extension Long {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
+// MARK: - MakeDictEncoder
+struct MakeDictEncoder: Codable, Equatable {
+    let makeDictEncoder: Int
+
+    enum CodingKeys: String, CodingKey {
+        case makeDictEncoder = "makeDictEncoder"
+    }
+}
+
+// MARK: MakeDictEncoder convenience initializers and mutators
+
+extension MakeDictEncoder {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(MakeDictEncoder.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(
+        makeDictEncoder: Int? = nil
+    ) -> MakeDictEncoder {
+        return MakeDictEncoder(
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
 // MARK: - Map
 struct Map: Codable, Equatable {
     let map: Int
@@ -9812,56 +9858,6 @@ extension Newtonsoft {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - No
-struct No: Codable, Equatable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(No.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
-//
-// Hashable or Equatable:
-// The compiler will not be able to synthesize the implementation of Hashable or Equatable
-// for types that require the use of JSONAny, nor will the implementation of Hashable be
-// synthesized for types that have collections (such as arrays or dictionaries).
-
 // MARK: - Guard
 struct Guard: Codable, Equatable {
     let guardGuard: Int
@@ -10612,59 +10608,10 @@ extension Mutating {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Nil
-struct Nil: Codable, Equatable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nil.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
-//
-// Hashable or Equatable:
-// The compiler will not be able to synthesize the implementation of Hashable or Equatable
-// for types that require the use of JSONAny, nor will the implementation of Hashable be
-// synthesized for types that have collections (such as arrays or dictionaries).
-
 // MARK: - Obj4
 struct Obj4: Codable, Equatable {
     let dummy: Int
+    let no: No
     let noSuchMethod: NoSuchMethod
     let noexcept: Noexcept
     let nonatomic: Nonatomic
@@ -10678,6 +10625,7 @@ struct Obj4: Codable, Equatable {
     let null: Null
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -10727,11 +10675,10 @@ struct Obj4: Codable, Equatable {
     let runtimeType: RuntimeType
     let s: S
     let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
         case noexcept = "noexcept"
         case nonatomic = "nonatomic"
@@ -10745,6 +10692,7 @@ struct Obj4: Codable, Equatable {
         case null = "NULL"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -10794,8 +10742,6 @@ struct Obj4: Codable, Equatable {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
     }
 }
 
@@ -10819,6 +10765,7 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
         noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
@@ -10832,6 +10779,7 @@ extension Obj4 {
         null: Null? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -10880,12 +10828,11 @@ extension Obj4 {
         retain: Retain? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
             noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
@@ -10899,6 +10846,7 @@ extension Obj4 {
             null: null ?? self.null,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -10947,9 +10895,57 @@ 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
+            sbyte: sbyte ?? self.sbyte
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - No
+struct No: Codable, Equatable {
+    let no: Int
+
+    enum CodingKeys: String, CodingKey {
+        case no = "NO"
+    }
+}
+
+// MARK: No convenience initializers and mutators
+
+extension No {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(No.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -11618,6 +11614,56 @@ extension Number {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
+// MARK: - Nil
+struct Nil: Codable, Equatable {
+    let nilNil: Int
+
+    enum CodingKeys: String, CodingKey {
+        case nilNil = "nil"
+    }
+}
+
+// MARK: Nil convenience initializers and mutators
+
+extension Nil {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Nil.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
 // MARK: - NoneClass
 struct NoneClass: Codable, Equatable {
     let none: Int
@@ -14068,106 +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: - Obj5
 struct Obj5: Codable, Equatable {
     let dummy: Int
@@ -14185,10 +14131,11 @@ struct Obj5: Codable, Equatable {
     let obj5Try: Try
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
     let select: Select
     let sendable: Sendable
     let serialDescriptor: SerialDescriptor
@@ -14234,8 +14181,6 @@ struct Obj5: Codable, Equatable {
     let undefined: Undefined
     let union: Union
     let unmarshalJSON: UnmarshalJSON
-    let unsafe: Unsafe
-    let useSerializers: UseSerializers
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -14253,10 +14198,11 @@ struct Obj5: Codable, Equatable {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
         case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
@@ -14302,8 +14248,6 @@ struct Obj5: Codable, Equatable {
         case undefined = "undefined"
         case union = "union"
         case unmarshalJSON = "UnmarshalJSON"
-        case unsafe = "unsafe"
-        case useSerializers = "UseSerializers"
     }
 }
 
@@ -14341,10 +14285,11 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
         select: Select? = nil,
         sendable: Sendable? = nil,
         serialDescriptor: SerialDescriptor? = nil,
@@ -14389,9 +14334,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unmarshalJSON: UnmarshalJSON? = nil,
-        unsafe: Unsafe? = nil,
-        useSerializers: UseSerializers? = nil
+        unmarshalJSON: UnmarshalJSON? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -14409,10 +14352,11 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
             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,
@@ -14457,9 +14401,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON,
-            unsafe: unsafe ?? self.unsafe,
-            useSerializers: useSerializers ?? self.useSerializers
+            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON
         )
     }
 
@@ -15178,20 +15120,20 @@ extension Typealias {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Unowned
-struct Unowned: Codable, Equatable {
-    let unownedUnowned: Int
+// MARK: - PrimitiveKind
+struct PrimitiveKind: Codable, Equatable {
+    let primitiveKind: Int
 
     enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
+        case primitiveKind = "PrimitiveKind"
     }
 }
 
-// MARK: Unowned convenience initializers and mutators
+// MARK: PrimitiveKind convenience initializers and mutators
 
-extension Unowned {
+extension PrimitiveKind {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unowned.self, from: data)
+        self = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15206,10 +15148,10 @@ extension Unowned {
     }
 
     func with(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        primitiveKind: Int? = nil
+    ) -> PrimitiveKind {
+        return PrimitiveKind(
+            primitiveKind: primitiveKind ?? self.primitiveKind
         )
     }
 
@@ -15228,20 +15170,20 @@ extension Unowned {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - PrimitiveKind
-struct PrimitiveKind: Codable, Equatable {
-    let primitiveKind: Int
+// MARK: - Obj5Self
+struct Obj5Self: Codable, Equatable {
+    let selfSelf: Int
 
     enum CodingKeys: String, CodingKey {
-        case primitiveKind = "PrimitiveKind"
+        case selfSelf = "self"
     }
 }
 
-// MARK: PrimitiveKind convenience initializers and mutators
+// MARK: Obj5Self convenience initializers and mutators
 
-extension PrimitiveKind {
+extension Obj5Self {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
+        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15256,10 +15198,10 @@ extension PrimitiveKind {
     }
 
     func with(
-        primitiveKind: Int? = nil
-    ) -> PrimitiveKind {
-        return PrimitiveKind(
-            primitiveKind: primitiveKind ?? self.primitiveKind
+        selfSelf: Int? = nil
+    ) -> Obj5Self {
+        return Obj5Self(
+            selfSelf: selfSelf ?? self.selfSelf
         )
     }
 
@@ -15278,20 +15220,20 @@ extension PrimitiveKind {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Obj5Self
-struct Obj5Self: Codable, Equatable {
-    let selfSelf: Int
+// MARK: - TrueClass
+struct TrueClass: Codable, Equatable {
+    let trueTrue: Int
 
     enum CodingKeys: String, CodingKey {
-        case selfSelf = "self"
+        case trueTrue = "true"
     }
 }
 
-// MARK: Obj5Self convenience initializers and mutators
+// MARK: TrueClass convenience initializers and mutators
 
-extension Obj5Self {
+extension TrueClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
+        self = try newJSONDecoder().decode(TrueClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15306,10 +15248,10 @@ extension Obj5Self {
     }
 
     func with(
-        selfSelf: Int? = nil
-    ) -> Obj5Self {
-        return Obj5Self(
-            selfSelf: selfSelf ?? self.selfSelf
+        trueTrue: Int? = nil
+    ) -> TrueClass {
+        return TrueClass(
+            trueTrue: trueTrue ?? self.trueTrue
         )
     }
 
@@ -15328,20 +15270,20 @@ extension Obj5Self {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - TrueClass
-struct TrueClass: Codable, Equatable {
-    let trueTrue: Int
+// MARK: - Sealed
+struct Sealed: Codable, Equatable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "true"
+        case sealed = "sealed"
     }
 }
 
-// MARK: TrueClass convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension TrueClass {
+extension Sealed {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(TrueClass.self, from: data)
+        self = try newJSONDecoder().decode(Sealed.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15356,10 +15298,60 @@ extension TrueClass {
     }
 
     func with(
-        trueTrue: Int? = nil
-    ) -> TrueClass {
-        return TrueClass(
-            trueTrue: trueTrue ?? self.trueTrue
+        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
         )
     }
 
@@ -17628,115 +17620,18 @@ extension UnmarshalJSON {
 // 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: - UseSerializers
-struct UseSerializers: Codable, Equatable {
-    let useSerializers: Int
-
-    enum CodingKeys: String, CodingKey {
-        case useSerializers = "UseSerializers"
-    }
-}
-
-// MARK: UseSerializers convenience initializers and mutators
-
-extension UseSerializers {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        useSerializers: Int? = nil
-    ) -> UseSerializers {
-        return UseSerializers(
-            useSerializers: useSerializers ?? self.useSerializers
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
-//
-// 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
+    let obj6Unowned: Unowned
     let obj6Var: Var
     let obj6Weak: Weak
     let obj6Where: Where
     let obj6While: While
     let obj6WillSet: WillSet
+    let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
     let using: Using
     let utf8JSONReader: Utf8JSONReader
@@ -17754,12 +17649,15 @@ struct Obj6: Codable, Equatable {
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case obj6Unowned = "unowned"
         case obj6Var = "var"
         case obj6Weak = "weak"
         case obj6Where = "where"
         case obj6While = "while"
         case obj6WillSet = "willSet"
+        case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
         case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
@@ -17797,12 +17695,15 @@ extension Obj6 {
 
     func with(
         dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
         obj6Var: Var? = nil,
         obj6Weak: Weak? = nil,
         obj6Where: Where? = nil,
         obj6While: While? = nil,
         obj6WillSet: WillSet? = nil,
+        unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
+        useSerializers: UseSerializers? = nil,
         ushort: Ushort? = nil,
         using: Using? = nil,
         utf8JSONReader: Utf8JSONReader? = nil,
@@ -17820,12 +17721,15 @@ extension Obj6 {
     ) -> Obj6 {
         return Obj6(
             dummy: dummy ?? self.dummy,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
             obj6Var: obj6Var ?? self.obj6Var,
             obj6Weak: obj6Weak ?? self.obj6Weak,
             obj6Where: obj6Where ?? self.obj6Where,
             obj6While: obj6While ?? self.obj6While,
             obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
+            useSerializers: useSerializers ?? self.useSerializers,
             ushort: ushort ?? self.ushort,
             using: using ?? self.using,
             utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
@@ -17858,6 +17762,56 @@ extension Obj6 {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
+// MARK: - Unowned
+struct Unowned: Codable, Equatable {
+    let unownedUnowned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unownedUnowned = "unowned"
+    }
+}
+
+// MARK: Unowned convenience initializers and mutators
+
+extension Unowned {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unowned.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(
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        )
+    }
+
+    func 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: - Var
 struct Var: Codable, Equatable {
     let varVar: Int
@@ -18108,6 +18062,56 @@ 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
@@ -18158,6 +18162,56 @@ extension Unsigned {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
+// MARK: - UseSerializers
+struct UseSerializers: Codable, Equatable {
+    let useSerializers: Int
+
+    enum CodingKeys: String, CodingKey {
+        case useSerializers = "UseSerializers"
+    }
+}
+
+// MARK: UseSerializers convenience initializers and mutators
+
+extension UseSerializers {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// 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
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 5302f45..3565d8a 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
@@ -6351,6 +6351,7 @@ struct Obj3: Codable, Sendable {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let makeDictEncoder: MakeDictEncoder
     let map: Map
     let mapEntry: MapEntry
     let marshalJSON: MarshalJSON
@@ -6361,7 +6362,6 @@ struct Obj3: Codable, Sendable {
     let native: Native
     let new: New
     let newtonsoft: Newtonsoft
-    let no: No
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -6377,7 +6377,6 @@ struct Obj3: Codable, Sendable {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -6419,6 +6418,7 @@ struct Obj3: Codable, Sendable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case makeDictEncoder = "makeDictEncoder"
         case map = "map"
         case mapEntry = "MapEntry"
         case marshalJSON = "MarshalJSON"
@@ -6429,7 +6429,6 @@ struct Obj3: Codable, Sendable {
         case native = "native"
         case new = "new"
         case newtonsoft = "newtonsoft"
-        case no = "NO"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -6445,7 +6444,6 @@ struct Obj3: Codable, Sendable {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 }
 
@@ -6507,6 +6505,7 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        makeDictEncoder: MakeDictEncoder? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         marshalJSON: MarshalJSON? = nil,
@@ -6517,7 +6516,6 @@ extension Obj3 {
         native: Native? = nil,
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -6532,8 +6530,7 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
@@ -6575,6 +6572,7 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             marshalJSON: marshalJSON ?? self.marshalJSON,
@@ -6585,7 +6583,6 @@ extension Obj3 {
             native: native ?? self.native,
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -6600,8 +6597,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -8286,6 +8282,50 @@ extension Long {
     }
 }
 
+// MARK: - MakeDictEncoder
+struct MakeDictEncoder: Codable, Sendable {
+    let makeDictEncoder: Int
+
+    enum CodingKeys: String, CodingKey {
+        case makeDictEncoder = "makeDictEncoder"
+    }
+}
+
+// MARK: MakeDictEncoder convenience initializers and mutators
+
+extension MakeDictEncoder {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(MakeDictEncoder.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(
+        makeDictEncoder: Int? = nil
+    ) -> MakeDictEncoder {
+        return MakeDictEncoder(
+            makeDictEncoder: makeDictEncoder ?? self.makeDictEncoder
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Map
 struct Map: Codable, Sendable {
     let map: Int
@@ -8726,50 +8766,6 @@ extension Newtonsoft {
     }
 }
 
-// MARK: - No
-struct No: Codable, Sendable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(No.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Guard
 struct Guard: Codable, Sendable {
     let guardGuard: Int
@@ -9430,53 +9426,10 @@ extension Mutating {
     }
 }
 
-// MARK: - Nil
-struct Nil: Codable, Sendable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nil.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj4
 struct Obj4: Codable, Sendable {
     let dummy: Int
+    let no: No
     let noSuchMethod: NoSuchMethod
     let noexcept: Noexcept
     let nonatomic: Nonatomic
@@ -9490,6 +9443,7 @@ struct Obj4: Codable, Sendable {
     let null: Null
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -9539,11 +9493,10 @@ struct Obj4: Codable, Sendable {
     let runtimeType: RuntimeType
     let s: S
     let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
         case noexcept = "noexcept"
         case nonatomic = "nonatomic"
@@ -9557,6 +9510,7 @@ struct Obj4: Codable, Sendable {
         case null = "NULL"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -9606,8 +9560,6 @@ struct Obj4: Codable, Sendable {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
     }
 }
 
@@ -9631,6 +9583,7 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
         noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
@@ -9644,6 +9597,7 @@ extension Obj4 {
         null: Null? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -9692,12 +9646,11 @@ extension Obj4 {
         retain: Retain? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
             noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
@@ -9711,6 +9664,7 @@ extension Obj4 {
             null: null ?? self.null,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -9759,9 +9713,51 @@ 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
+            sbyte: sbyte ?? self.sbyte
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - No
+struct No: Codable, Sendable {
+    let no: Int
+
+    enum CodingKeys: String, CodingKey {
+        case no = "NO"
+    }
+}
+
+// MARK: No convenience initializers and mutators
+
+extension No {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(No.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -10346,6 +10342,50 @@ extension Number {
     }
 }
 
+// MARK: - Nil
+struct Nil: Codable, Sendable {
+    let nilNil: Int
+
+    enum CodingKeys: String, CodingKey {
+        case nilNil = "nil"
+    }
+}
+
+// MARK: Nil convenience initializers and mutators
+
+extension Nil {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Nil.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - NoneClass
 struct NoneClass: Codable, Sendable {
     let none: Int
@@ -12502,94 +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: - Obj5
 struct Obj5: Codable, Sendable {
     let dummy: Int
@@ -12607,10 +12559,11 @@ struct Obj5: Codable, Sendable {
     let obj5Try: Try
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
     let select: Select
     let sendable: SendableClass
     let serialDescriptor: SerialDescriptor
@@ -12656,8 +12609,6 @@ struct Obj5: Codable, Sendable {
     let undefined: Undefined
     let union: Union
     let unmarshalJSON: UnmarshalJSON
-    let unsafe: Unsafe
-    let useSerializers: UseSerializers
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -12675,10 +12626,11 @@ struct Obj5: Codable, Sendable {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
         case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
@@ -12724,8 +12676,6 @@ struct Obj5: Codable, Sendable {
         case undefined = "undefined"
         case union = "union"
         case unmarshalJSON = "UnmarshalJSON"
-        case unsafe = "unsafe"
-        case useSerializers = "UseSerializers"
     }
 }
 
@@ -12763,10 +12713,11 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
         select: Select? = nil,
         sendable: SendableClass? = nil,
         serialDescriptor: SerialDescriptor? = nil,
@@ -12811,9 +12762,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unmarshalJSON: UnmarshalJSON? = nil,
-        unsafe: Unsafe? = nil,
-        useSerializers: UseSerializers? = nil
+        unmarshalJSON: UnmarshalJSON? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -12831,10 +12780,11 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
             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,
@@ -12879,9 +12829,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON,
-            unsafe: unsafe ?? self.unsafe,
-            useSerializers: useSerializers ?? self.useSerializers
+            unmarshalJSON: unmarshalJSON ?? self.unmarshalJSON
         )
     }
 
@@ -13510,50 +13458,6 @@ extension Typealias {
     }
 }
 
-// MARK: - Unowned
-struct Unowned: Codable, Sendable {
-    let unownedUnowned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
-    }
-}
-
-// MARK: Unowned convenience initializers and mutators
-
-extension Unowned {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unowned.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(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
-        )
-    }
-
-    func 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: - PrimitiveKind
 struct PrimitiveKind: Codable, Sendable {
     let primitiveKind: Int
@@ -13686,6 +13590,94 @@ 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
@@ -15666,103 +15658,18 @@ extension UnmarshalJSON {
     }
 }
 
-// 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: - UseSerializers
-struct UseSerializers: Codable, Sendable {
-    let useSerializers: Int
-
-    enum CodingKeys: String, CodingKey {
-        case useSerializers = "UseSerializers"
-    }
-}
-
-// MARK: UseSerializers convenience initializers and mutators
-
-extension UseSerializers {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
-    }
-
-    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
-        guard let data = json.data(using: encoding) else {
-            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
-        }
-        try self.init(data: data)
-    }
-
-    init(fromURL url: URL) throws {
-        try self.init(data: try Data(contentsOf: url))
-    }
-
-    func with(
-        useSerializers: Int? = nil
-    ) -> UseSerializers {
-        return UseSerializers(
-            useSerializers: useSerializers ?? self.useSerializers
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj6
 struct Obj6: Codable, Sendable {
     let dummy: Int
+    let obj6Unowned: Unowned
     let obj6Var: Var
     let obj6Weak: Weak
     let obj6Where: Where
     let obj6While: While
     let obj6WillSet: WillSet
+    let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
     let using: Using
     let utf8JSONReader: Utf8JSONReader
@@ -15780,12 +15687,15 @@ struct Obj6: Codable, Sendable {
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case obj6Unowned = "unowned"
         case obj6Var = "var"
         case obj6Weak = "weak"
         case obj6Where = "where"
         case obj6While = "while"
         case obj6WillSet = "willSet"
+        case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
         case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
@@ -15823,12 +15733,15 @@ extension Obj6 {
 
     func with(
         dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
         obj6Var: Var? = nil,
         obj6Weak: Weak? = nil,
         obj6Where: Where? = nil,
         obj6While: While? = nil,
         obj6WillSet: WillSet? = nil,
+        unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
+        useSerializers: UseSerializers? = nil,
         ushort: Ushort? = nil,
         using: Using? = nil,
         utf8JSONReader: Utf8JSONReader? = nil,
@@ -15846,12 +15759,15 @@ extension Obj6 {
     ) -> Obj6 {
         return Obj6(
             dummy: dummy ?? self.dummy,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
             obj6Var: obj6Var ?? self.obj6Var,
             obj6Weak: obj6Weak ?? self.obj6Weak,
             obj6Where: obj6Where ?? self.obj6Where,
             obj6While: obj6While ?? self.obj6While,
             obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
+            useSerializers: useSerializers ?? self.useSerializers,
             ushort: ushort ?? self.ushort,
             using: using ?? self.using,
             utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
@@ -15878,6 +15794,50 @@ extension Obj6 {
     }
 }
 
+// MARK: - Unowned
+struct Unowned: Codable, Sendable {
+    let unownedUnowned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unownedUnowned = "unowned"
+    }
+}
+
+// MARK: Unowned convenience initializers and mutators
+
+extension Unowned {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unowned.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(
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        )
+    }
+
+    func 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: - Var
 struct Var: Codable, Sendable {
     let varVar: Int
@@ -16098,6 +16058,50 @@ 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
@@ -16142,6 +16146,50 @@ extension Unsigned {
     }
 }
 
+// MARK: - UseSerializers
+struct UseSerializers: Codable, Sendable {
+    let useSerializers: Int
+
+    enum CodingKeys: String, CodingKey {
+        case useSerializers = "UseSerializers"
+    }
+}
+
+// MARK: UseSerializers convenience initializers and mutators
+
+extension UseSerializers {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Ushort
 struct Ushort: Codable, Sendable {
     let ushort: Int
diff --git a/base/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts
index a983213..fc1c2ce 100644
--- a/base/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/00c36.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
index 5ec761b..4772f4d 100644
--- a/base/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
@@ -173,7 +173,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -184,7 +184,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/010b1.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/016af.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/033b1.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts
index 16de21f..a0818b3 100644
--- a/base/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/050b0.json/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts
index 5bb27b2..8b10a25 100644
--- a/base/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/06bee.json/default/TopLevel.ts
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts
index 6e06286..4fb6644 100644
--- a/base/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/07540.json/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0779f.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts
index 943765c..bd97756 100644
--- a/base/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/07c75.json/default/TopLevel.ts
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts
index 38eedf1..eed9604 100644
--- a/base/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/09f54.json/default/TopLevel.ts
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts
index 4cb922c..2746414 100644
--- a/base/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0a358.json/default/TopLevel.ts
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
index 22b91e1..e71c14e 100644
--- a/base/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0a91a.json/default/TopLevel.ts
@@ -322,7 +322,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -333,7 +333,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
index 507c416..7788252 100644
--- a/base/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
index 49be2bd..526bc9a 100644
--- a/base/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
@@ -215,7 +215,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
index 7ad0a89..93dba41 100644
--- a/base/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0e0c2.json/default/TopLevel.ts
@@ -178,7 +178,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -189,7 +189,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts
index fc2446d..d437cfe 100644
--- a/base/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/0fecf.json/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts
index 40b751e..0b166b9 100644
--- a/base/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/10be4.json/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts
index 9a20499..b87f838 100644
--- a/base/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/112b5.json/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts
index 649aa7f..66dc563 100644
--- a/base/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/127a1.json/default/TopLevel.ts
@@ -215,7 +215,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts
index 493d608..22f1c0e 100644
--- a/base/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/13d8d.json/default/TopLevel.ts
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -144,7 +144,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts
index 4325fc0..59c74eb 100644
--- a/base/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/14d38.json/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/167d6.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts
index ecd58f0..1b5849d 100644
--- a/base/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/176f1.json/default/TopLevel.ts
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/1b28c.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index d0d2ad2..445362c 100644
--- a/base/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -181,7 +181,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -192,7 +192,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts
index 4c9b561..819aa4a 100644
--- a/base/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/2465e.json/default/TopLevel.ts
@@ -180,7 +180,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -191,7 +191,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/24f52.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts
index 2f6399a..3ba7024 100644
--- a/base/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/262f0.json/default/TopLevel.ts
@@ -207,7 +207,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -218,7 +218,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts
index 154183a..c8629b5 100644
--- a/base/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/26b49.json/default/TopLevel.ts
@@ -214,7 +214,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -225,7 +225,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
index b55faf6..28bc712 100644
--- a/base/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
@@ -294,7 +294,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -305,7 +305,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts
index 35fbe5d..742e2ab 100644
--- a/base/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/27332.json/default/TopLevel.ts
@@ -246,7 +246,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -257,7 +257,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts
index c976ff4..1c8aed7 100644
--- a/base/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/29f47.json/default/TopLevel.ts
@@ -233,7 +233,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -244,7 +244,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index a7e2dd6..b0e2f56 100644
--- a/base/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -191,7 +191,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -202,7 +202,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts
index 450439c..07efe7a 100644
--- a/base/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/2df80.json/default/TopLevel.ts
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts
index d4aaa45..dee8570 100644
--- a/base/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/31189.json/default/TopLevel.ts
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -145,7 +145,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts
index d47172c..a4285a7 100644
--- a/base/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/32431.json/default/TopLevel.ts
@@ -170,7 +170,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -181,7 +181,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
index 9774154..ec5f7af 100644
--- a/base/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/32d5c.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts
index bfe127f..afb9141 100644
--- a/base/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/337ed.json/default/TopLevel.ts
@@ -165,7 +165,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -176,7 +176,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
index b2bf5c1..f359b5f 100644
--- a/base/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
@@ -148,7 +148,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -159,7 +159,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts
index 695cfe1..aa62f14 100644
--- a/base/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/34702.json/default/TopLevel.ts
@@ -162,7 +162,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -173,7 +173,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts
index dd27fff..b6a7110 100644
--- a/base/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3536b.json/default/TopLevel.ts
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3659d.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/36d5d.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3a6b3.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
index ecd58f0..1b5849d 100644
--- a/base/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
@@ -132,7 +132,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index c8671c7..447f016 100644
--- a/base/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -207,7 +207,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -218,7 +218,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts
index 81973fb..5b670fd 100644
--- a/base/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/421d4.json/default/TopLevel.ts
@@ -218,7 +218,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -229,7 +229,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts
index 3093256..654c135 100644
--- a/base/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/437e7.json/default/TopLevel.ts
@@ -211,7 +211,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -222,7 +222,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts
index a719de8..bd2f320 100644
--- a/base/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/43970.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts
index 5f89b91..3d70614 100644
--- a/base/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/458db.json/default/TopLevel.ts
@@ -148,7 +148,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -159,7 +159,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4961a.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4a0d7.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts
index 563ca2d..5003aff 100644
--- a/base/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4a455.json/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4c547.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
index f0215d0..43f9ecf 100644
--- a/base/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
@@ -245,7 +245,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -256,7 +256,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/4e336.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts
index 021ff27..5c52d0e 100644
--- a/base/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/54147.json/default/TopLevel.ts
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts
index 38f7422..42cb5de 100644
--- a/base/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/54d32.json/default/TopLevel.ts
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts
index 4d6318e..63801fc 100644
--- a/base/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/570ec.json/default/TopLevel.ts
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -150,7 +150,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5dd0d.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
index 1ec275a..0d67487 100644
--- a/base/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5eae5.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5eb20.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
index c0a3d03..be1947e 100644
--- a/base/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
@@ -292,7 +292,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -303,7 +303,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts
index 2c1281b..a72fee2 100644
--- a/base/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/617e8.json/default/TopLevel.ts
@@ -291,7 +291,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -302,7 +302,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/61b66.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6260a.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index 9324220..d2b5ef3 100644
--- a/base/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -170,7 +170,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -181,7 +181,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts
index 9830cd5..3226328 100644
--- a/base/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/66121.json/default/TopLevel.ts
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -153,7 +153,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts
index 01ea72d..62d2159 100644
--- a/base/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6617c.json/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts
index 078e091..5b5522e 100644
--- a/base/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/67c03.json/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts
index 821bced..3b9320f 100644
--- a/base/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/68c30.json/default/TopLevel.ts
@@ -138,7 +138,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -149,7 +149,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts
index fb256a3..8d20b95 100644
--- a/base/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6c155.json/default/TopLevel.ts
@@ -160,7 +160,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -171,7 +171,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts
index d66b8fa..de60593 100644
--- a/base/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6de06.json/default/TopLevel.ts
@@ -250,7 +250,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -261,7 +261,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
index 6e2745b..82b8a2e 100644
--- a/base/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
@@ -207,7 +207,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -218,7 +218,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts
index 63835a1..83ec7fb 100644
--- a/base/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/6eb00.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/70c77.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts
index 7f98792..0be79a0 100644
--- a/base/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/734ad.json/default/TopLevel.ts
@@ -176,7 +176,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -187,7 +187,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/75912.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts
index 2c8c3d5..cf1c9b7 100644
--- a/base/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7681c.json/default/TopLevel.ts
@@ -215,7 +215,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
index 1ff30e6..7037d82 100644
--- a/base/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
@@ -288,7 +288,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -299,7 +299,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts
index bd1d90f..04ac300 100644
--- a/base/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/77392.json/default/TopLevel.ts
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts
index cca1a7e..adb4d79 100644
--- a/base/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7d397.json/default/TopLevel.ts
@@ -180,7 +180,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -191,7 +191,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7d722.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts
index 8bb0df8..1b89077 100644
--- a/base/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7df41.json/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7dfa6.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
index a522f6b..f598add 100644
--- a/base/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
@@ -144,7 +144,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -155,7 +155,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index 908a330..8371870 100644
--- a/base/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
index 6884826..61ab7ed 100644
--- a/base/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts
index 7393e16..c261cf7 100644
--- a/base/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/80aff.json/default/TopLevel.ts
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts
index 3b002b1..d2b496d 100644
--- a/base/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/82509.json/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts
index b0907a4..a71a770 100644
--- a/base/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/8592b.json/default/TopLevel.ts
@@ -219,7 +219,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -230,7 +230,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/88130.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/8a62c.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts
index 071e0d8..725b46a 100644
--- a/base/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/908db.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9617f.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts
index 900a451..86c55b2 100644
--- a/base/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/96f7c.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts
index b1f7df7..80f0c60 100644
--- a/base/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9847b.json/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9929c.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts
index d940071..d4795e4 100644
--- a/base/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/996bd.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts
index a7ce96f..81c828d 100644
--- a/base/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9a503.json/default/TopLevel.ts
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -145,7 +145,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
index 9f4c57f..f8004a8 100644
--- a/base/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9ac3b.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts
index f2587f8..5d5ab31 100644
--- a/base/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/9eed5.json/default/TopLevel.ts
@@ -134,7 +134,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -145,7 +145,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts
index b1b15e4..1fe25c5 100644
--- a/base/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a0496.json/default/TopLevel.ts
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
index e16a8f2..1131945 100644
--- a/base/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
@@ -217,7 +217,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -228,7 +228,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a71df.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/a9691.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/abb4b.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ac944.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts
index 40b751e..0b166b9 100644
--- a/base/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ad8be.json/default/TopLevel.ts
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -158,7 +158,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
index faecb0c..7bef174 100644
--- a/base/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
@@ -195,7 +195,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -206,7 +206,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
index 697ca29..056f190 100644
--- a/base/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
@@ -143,7 +143,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -154,7 +154,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
index 9bb1083..8c660cf 100644
--- a/base/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
@@ -193,7 +193,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -204,7 +204,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index 62b85c8..d7ac155 100644
--- a/base/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b6f2c.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts
index cc93842..678d2fe 100644
--- a/base/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b6fe5.json/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts
index bff8ceb..94bd27e 100644
--- a/base/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/b9f64.json/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/bb1ec.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts
index 62b7427..e56c5fc 100644
--- a/base/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/be234.json/default/TopLevel.ts
@@ -256,7 +256,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -267,7 +267,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts
index 5489e4d..7753930 100644
--- a/base/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c0356.json/default/TopLevel.ts
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c0a3a.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts
index afcc259..7bf5c8c 100644
--- a/base/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c3303.json/default/TopLevel.ts
@@ -214,7 +214,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -225,7 +225,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts
index 766e801..5bacf4a 100644
--- a/base/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c6cfd.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
index 6cc0632..95f6cfc 100644
--- a/base/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
index 185febd..8268b4a 100644
--- a/base/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
index 30b8696..c32a5c5 100644
--- a/base/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ccd18.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts
index 05276b1..0bd5a14 100644
--- a/base/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cd238.json/default/TopLevel.ts
@@ -140,7 +140,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -151,7 +151,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cd463.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
index 02abac0..57ea7c3 100644
--- a/base/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
index 51c34f0..7f5763c 100644
--- a/base/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts
index 824027c..d3377c9 100644
--- a/base/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/d0908.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
index 20b6f90..6f46884 100644
--- a/base/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/d23d5.json/default/TopLevel.ts
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -133,7 +133,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
index b728093..c6e0493 100644
--- a/base/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
@@ -207,7 +207,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -218,7 +218,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index 700fadf..4d9b0f2 100644
--- a/base/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -175,7 +175,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -186,7 +186,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index 700fadf..4d9b0f2 100644
--- a/base/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -175,7 +175,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -186,7 +186,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
index 1d071df..a8a4006 100644
--- a/base/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
@@ -168,7 +168,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -179,7 +179,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts
index 5e66d83..7d69fbe 100644
--- a/base/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/df957.json/default/TopLevel.ts
@@ -205,7 +205,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -216,7 +216,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
index 5f4da6f..51f31c1 100644
--- a/base/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
@@ -213,7 +213,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -224,7 +224,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index e19dd6e..580d429 100644
--- a/base/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -207,7 +207,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -218,7 +218,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts
index 88ed88f..a3179cd 100644
--- a/base/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e2a58.json/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts
index b2a72cd..1718052 100644
--- a/base/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e324e.json/default/TopLevel.ts
@@ -178,7 +178,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -189,7 +189,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
index 0216fc7..7a3ba92 100644
--- a/base/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -142,7 +142,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts
index 9a20499..b87f838 100644
--- a/base/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e64a0.json/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
index 3bc4f02..566cd11 100644
--- a/base/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
@@ -338,7 +338,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -349,7 +349,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts
index 281babf..7ba3d18 100644
--- a/base/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/ed095.json/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
index 9c3cfa0..4740e51 100644
--- a/base/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
@@ -193,7 +193,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -204,7 +204,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts
index b1f7df7..80f0c60 100644
--- a/base/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f3139.json/default/TopLevel.ts
@@ -110,7 +110,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -121,7 +121,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts
index d624211..39e8567 100644
--- a/base/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f466a.json/default/TopLevel.ts
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -127,7 +127,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
index 0388eb4..8551417 100644
--- a/base/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
@@ -215,7 +215,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
index e74ebdb..21545df 100644
--- a/base/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
@@ -217,7 +217,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -228,7 +228,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
index e8bc876..14a8b89 100644
--- a/base/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
@@ -191,7 +191,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -202,7 +202,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts
index f045824..1b8ecff 100644
--- a/base/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/f974d.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts
index 41f69ac..c84fabf 100644
--- a/base/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/faff5.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
index a9e8711..db1ad59 100644
--- a/base/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
@@ -317,7 +317,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -328,7 +328,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts b/head/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts
index 38eedf1..eed9604 100644
--- a/base/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/misc/fd329.json/default/TopLevel.ts
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
index 75c36fd..92fe20e 100644
--- a/base/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
@@ -702,7 +702,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -713,7 +713,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
index b7774e3..992c586 100644
--- a/base/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts
index 71bdb20..291c523 100644
--- a/base/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2521.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
index 6f1b3c3..83e84b5 100644
--- a/base/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2590.json/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
index 551b34c..7a0e0f8 100644
--- a/base/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2663.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts
index 21337ab..4a006ba 100644
--- a/base/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug2793.json/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts
index ce49d3d..fb9e93a 100644
--- a/base/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug427.json/default/TopLevel.ts
@@ -664,7 +664,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -675,7 +675,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts
index 72f464b..e09d78b 100644
--- a/base/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug790.json/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
index 3d18c2a..8798125 100644
--- a/base/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts
index 1d678fc..6343730 100644
--- a/base/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/bug863.json/default/TopLevel.ts
@@ -177,7 +177,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -188,7 +188,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
index 48962b7..ab2e455 100644
--- a/base/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -130,7 +130,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index 542710c..310e997 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index 405bb56..cf7f99e 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -603,7 +603,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -614,7 +614,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
index 542710c..310e997 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index fd0686c..a0f3a59 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index 542710c..310e997 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts
index c459d41..d587da0 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index 542710c..310e997 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index 542710c..310e997 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts
index 9fa0df5..92db44f 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts
index e30f716..b9639ae 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index baa7c41..d7e70b1 100644
--- a/base/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations1.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -499,7 +499,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -510,7 +510,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index 0cf2c61..87fafd1 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index 7af1f47..8c6b1ba 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -531,7 +531,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -542,7 +542,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
index 0cf2c61..87fafd1 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index a998694..0152e2d 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index 0cf2c61..87fafd1 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts
index dd1c517..3176c3d 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index 0cf2c61..87fafd1 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index 0cf2c61..87fafd1 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts
index 9b327ea..4823672 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts
index 445481f..bdb0c86 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index 9ee5cc8..da25293 100644
--- a/base/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations2.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -451,7 +451,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -462,7 +462,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index deeb945..d845dec 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index dca1901..953086c 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -667,7 +667,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -678,7 +678,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
index deeb945..d845dec 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index c4ee62d..9368a95 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index deeb945..d845dec 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts
index bab6e2e..139edc8 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index deeb945..d845dec 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index deeb945..d845dec 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts
index 66a975d..056e4a2 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts
index cdf2e61..701adbe 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index ce3c4d5..3747002 100644
--- a/base/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations3.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -555,7 +555,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -566,7 +566,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
index c743e3a..29dd5fd 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/acronym-style-pascal--d9e0c1bd777a/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts
index 32879ba..717d838 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/converters-all-objects--3a443babd1cb/TopLevel.ts
@@ -753,7 +753,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -764,7 +764,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
index c743e3a..29dd5fd 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
index a531c43..c7fc1ff 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/nice-property-names-true--f4d7920ee2ce/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
index c743e3a..29dd5fd 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-const-values-true--6b26e4d1265c/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 33bfc62..df03c4c 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
index c743e3a..29dd5fd 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unions-false--a5053c0a486d/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
index c743e3a..29dd5fd 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/prefer-unknown-false--f1ab9e45d823/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts
index db8aa65..83ea606 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/raw-type-any--474b307c39db/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts
index f0890e6..b8523f1 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts b/head/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
index 95b3291..45f4e17 100644
--- a/base/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combinations4.json/runtime-typecheck-ignore-unknown-properties-true--d792c40f022e/TopLevel.ts
@@ -625,7 +625,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -636,7 +636,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = val[key];
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts
index 37bdf50..8611daa 100644
--- a/base/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/combined-enum.json/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts
index 2d5cdbd..0db3830 100644
--- a/base/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/direct-recursive.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts
index 7dfc6b7..c0d1e77 100644
--- a/base/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/empty-enum.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts
index de42c53..2013d29 100644
--- a/base/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/identifiers.json/default/TopLevel.ts
@@ -135,7 +135,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -146,7 +146,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts
index c8e46d4..5531920 100644
--- a/base/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/issue2680-object-array.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts
index 9f9b3d6..70ad9d6 100644
--- a/base/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/issue2680-scalar-array.json/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
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 8b63320..a633ffa 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
@@ -686,7 +686,6 @@ export interface Obj3 {
     Locale:                     Locale;
     MapEntry:                   MapEntry;
     MarshalJSON:                MarshalJSON;
-    NO:                         No;
     dummy:                      number;
     goto:                       Goto;
     guard:                      Guard;
@@ -724,6 +723,7 @@ export interface Obj3 {
     list:                       List;
     lock:                       Lock;
     long:                       Long;
+    makeDictEncoder:            MakeDictEncoder;
     map:                        Map;
     metadata_property_handling: MetadataPropertyHandling;
     module:                     Module;
@@ -733,7 +733,6 @@ export interface Obj3 {
     native:                     Native;
     new:                        New;
     newtonsoft:                 Newtonsoft;
-    nil:                        Nil;
 }
 
 export interface Hashable {
@@ -808,10 +807,6 @@ export interface MarshalJSON {
     MarshalJSON: number;
 }
 
-export interface No {
-    NO: number;
-}
-
 export interface Goto {
     goto: number;
 }
@@ -956,6 +951,10 @@ export interface Long {
     long: number;
 }
 
+export interface MakeDictEncoder {
+    makeDictEncoder: number;
+}
+
 export interface Map {
     map: number;
 }
@@ -992,11 +991,8 @@ export interface Newtonsoft {
     newtonsoft: number;
 }
 
-export interface Nil {
-    nil: number;
-}
-
 export interface Obj4 {
+    NO:               No;
     NSError:          NSError;
     NSObject:         NSObject;
     NSString:         NSString;
@@ -1005,8 +1001,8 @@ export interface Obj4 {
     ObjectMapper:     ObjectMapper;
     Protocol:         Protocol;
     RegExp:           RegExp;
-    SEL:              Sel;
     dummy:            number;
+    nil:              Nil;
     noSuchMethod:     NoSuchMethod;
     noexcept:         Noexcept;
     nonatomic:        Nonatomic;
@@ -1061,7 +1057,10 @@ export interface Obj4 {
     runtimeType:      RuntimeType;
     s:                S;
     sbyte:            Sbyte;
-    sealed:           Sealed;
+}
+
+export interface No {
+    NO: number;
 }
 
 export interface NSError {
@@ -1096,8 +1095,8 @@ export interface RegExp {
     RegExp: string;
 }
 
-export interface Sel {
-    SEL: number;
+export interface Nil {
+    nil: number;
 }
 
 export interface NoSuchMethod {
@@ -1316,13 +1315,10 @@ export interface Sbyte {
     sbyte: number;
 }
 
-export interface Sealed {
-    sealed: number;
-}
-
 export interface Obj5 {
     KSerializer:        KSerializer;
     PrimitiveKind:      PrimitiveKind;
+    SEL:                Sel;
     Self:               Self;
     Sendable:           Sendable;
     SerialDescriptor:   SerialDescriptor;
@@ -1339,8 +1335,8 @@ export interface Obj5 {
     True:               True;
     Type:               Type;
     UnmarshalJSON:      UnmarshalJSON;
-    UseSerializers:     UseSerializers;
     dummy:              number;
+    sealed:             Sealed;
     select:             Select;
     self:               SelfClass;
     serialize:          Serialize;
@@ -1385,8 +1381,6 @@ export interface Obj5 {
     unchecked:          Unchecked;
     undefined:          Undefined;
     union:              Union;
-    unowned:            Unowned;
-    unsafe:             Unsafe;
 }
 
 export interface KSerializer {
@@ -1397,6 +1391,10 @@ export interface PrimitiveKind {
     PrimitiveKind: number;
 }
 
+export interface Sel {
+    SEL: number;
+}
+
 export interface Self {
     Self: number;
 }
@@ -1461,8 +1459,8 @@ export interface UnmarshalJSON {
     UnmarshalJSON: number;
 }
 
-export interface UseSerializers {
-    UseSerializers: number;
+export interface Sealed {
+    sealed: number;
 }
 
 export interface Select {
@@ -1641,20 +1639,15 @@ export interface Union {
     union: number;
 }
 
-export interface Unowned {
-    unowned: number;
-}
-
-export interface Unsafe {
-    unsafe: number;
-}
-
 export interface Obj6 {
     UUID:           UUID;
+    UseSerializers: UseSerializers;
     Utf8JsonReader: Utf8JSONReader;
     Utf8JsonWriter: Utf8JSONWriter;
     YES:            Yes;
     dummy:          number;
+    unowned:        Unowned;
+    unsafe:         Unsafe;
     unsigned:       Unsigned;
     ushort:         Ushort;
     using:          Using;
@@ -1677,6 +1670,10 @@ export interface UUID {
     UUID: number;
 }
 
+export interface UseSerializers {
+    UseSerializers: number;
+}
+
 export interface Utf8JSONReader {
     Utf8JsonReader: number;
 }
@@ -1689,6 +1686,14 @@ export interface Yes {
     YES: number;
 }
 
+export interface Unowned {
+    unowned: number;
+}
+
+export interface Unsafe {
+    unsafe: number;
+}
+
 export interface Unsigned {
     unsigned: number;
 }
@@ -1849,7 +1854,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -1860,7 +1865,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -2487,7 +2492,6 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "MarshalJSON", js: "MarshalJSON", typ: r("MarshalJSON") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
@@ -2525,6 +2529,7 @@ const typeMap: any = {
         { json: "list", js: "list", typ: r("List") },
         { json: "lock", js: "lock", typ: r("Lock") },
         { json: "long", js: "long", typ: r("Long") },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: r("MakeDictEncoder") },
         { json: "map", js: "map", typ: r("Map") },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: r("MetadataPropertyHandling") },
         { json: "module", js: "module", typ: r("Module") },
@@ -2534,7 +2539,6 @@ const typeMap: any = {
         { json: "native", js: "native", typ: r("Native") },
         { json: "new", js: "new", typ: r("New") },
         { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -2590,9 +2594,6 @@ const typeMap: any = {
     "MarshalJSON": o([
         { json: "MarshalJSON", js: "MarshalJSON", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
-    ], false),
     "Goto": o([
         { json: "goto", js: "goto", typ: i(0) },
     ], false),
@@ -2701,6 +2702,9 @@ const typeMap: any = {
     "Long": o([
         { json: "long", js: "long", typ: i(0) },
     ], false),
+    "MakeDictEncoder": o([
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: i(0) },
+    ], false),
     "Map": o([
         { json: "map", js: "map", typ: i(0) },
     ], false),
@@ -2728,10 +2732,8 @@ const typeMap: any = {
     "Newtonsoft": o([
         { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
     ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
@@ -2740,8 +2742,8 @@ const typeMap: any = {
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
         { 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: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
         { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
@@ -2796,7 +2798,9 @@ 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") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2822,8 +2826,8 @@ const typeMap: any = {
     "RegExp": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
@@ -2987,12 +2991,10 @@ const typeMap: any = {
     "Sbyte": o([
         { json: "sbyte", js: "sbyte", typ: i(0) },
     ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", 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") },
@@ -3009,8 +3011,8 @@ const typeMap: any = {
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: r("UnmarshalJSON") },
-        { 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") },
@@ -3055,8 +3057,6 @@ const typeMap: any = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -3064,6 +3064,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),
@@ -3112,8 +3115,8 @@ const typeMap: any = {
     "UnmarshalJSON": o([
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: i(0) },
     ], false),
-    "UseSerializers": o([
-        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
     ], false),
     "Select": o([
         { json: "select", js: "select", typ: i(0) },
@@ -3247,18 +3250,15 @@ const typeMap: any = {
     "Union": o([
         { json: "union", js: "union", typ: i(0) },
     ], false),
-    "Unowned": o([
-        { json: "unowned", js: "unowned", typ: i(0) },
-    ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
     "Obj6": o([
         { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
         { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "unowned", js: "unowned", typ: r("Unowned") },
+        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
         { json: "using", js: "using", typ: r("Using") },
@@ -3279,6 +3279,9 @@ const typeMap: any = {
     "UUID": o([
         { json: "UUID", js: "UUID", typ: i(0) },
     ], false),
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    ], false),
     "Utf8JSONReader": o([
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
     ], false),
@@ -3288,6 +3291,12 @@ const typeMap: any = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "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),
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 4c6b9e8..927f747 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
@@ -686,7 +686,6 @@ export type Obj3 = {
     Locale:                     Locale;
     MapEntry:                   MapEntry;
     MarshalJSON:                MarshalJSON;
-    NO:                         No;
     dummy:                      number;
     goto:                       Goto;
     guard:                      Guard;
@@ -724,6 +723,7 @@ export type Obj3 = {
     list:                       List;
     lock:                       Lock;
     long:                       Long;
+    makeDictEncoder:            MakeDictEncoder;
     map:                        Map;
     metadata_property_handling: MetadataPropertyHandling;
     module:                     Module;
@@ -733,7 +733,6 @@ export type Obj3 = {
     native:                     Native;
     new:                        New;
     newtonsoft:                 Newtonsoft;
-    nil:                        Nil;
 }
 
 export type Hashable = {
@@ -808,10 +807,6 @@ export type MarshalJSON = {
     MarshalJSON: number;
 }
 
-export type No = {
-    NO: number;
-}
-
 export type Goto = {
     goto: number;
 }
@@ -956,6 +951,10 @@ export type Long = {
     long: number;
 }
 
+export type MakeDictEncoder = {
+    makeDictEncoder: number;
+}
+
 export type Map = {
     map: number;
 }
@@ -992,11 +991,8 @@ export type Newtonsoft = {
     newtonsoft: number;
 }
 
-export type Nil = {
-    nil: number;
-}
-
 export type Obj4 = {
+    NO:               No;
     NSError:          NSError;
     NSObject:         NSObject;
     NSString:         NSString;
@@ -1005,8 +1001,8 @@ export type Obj4 = {
     ObjectMapper:     ObjectMapper;
     Protocol:         Protocol;
     RegExp:           RegExp;
-    SEL:              Sel;
     dummy:            number;
+    nil:              Nil;
     noSuchMethod:     NoSuchMethod;
     noexcept:         Noexcept;
     nonatomic:        Nonatomic;
@@ -1061,7 +1057,10 @@ export type Obj4 = {
     runtimeType:      RuntimeType;
     s:                S;
     sbyte:            Sbyte;
-    sealed:           Sealed;
+}
+
+export type No = {
+    NO: number;
 }
 
 export type NSError = {
@@ -1096,8 +1095,8 @@ export type RegExp = {
     RegExp: string;
 }
 
-export type Sel = {
-    SEL: number;
+export type Nil = {
+    nil: number;
 }
 
 export type NoSuchMethod = {
@@ -1316,13 +1315,10 @@ export type Sbyte = {
     sbyte: number;
 }
 
-export type Sealed = {
-    sealed: number;
-}
-
 export type Obj5 = {
     KSerializer:        KSerializer;
     PrimitiveKind:      PrimitiveKind;
+    SEL:                Sel;
     Self:               Self;
     Sendable:           Sendable;
     SerialDescriptor:   SerialDescriptor;
@@ -1339,8 +1335,8 @@ export type Obj5 = {
     True:               True;
     Type:               Type;
     UnmarshalJSON:      UnmarshalJSON;
-    UseSerializers:     UseSerializers;
     dummy:              number;
+    sealed:             Sealed;
     select:             Select;
     self:               SelfClass;
     serialize:          Serialize;
@@ -1385,8 +1381,6 @@ export type Obj5 = {
     unchecked:          Unchecked;
     undefined:          Undefined;
     union:              Union;
-    unowned:            Unowned;
-    unsafe:             Unsafe;
 }
 
 export type KSerializer = {
@@ -1397,6 +1391,10 @@ export type PrimitiveKind = {
     PrimitiveKind: number;
 }
 
+export type Sel = {
+    SEL: number;
+}
+
 export type Self = {
     Self: number;
 }
@@ -1461,8 +1459,8 @@ export type UnmarshalJSON = {
     UnmarshalJSON: number;
 }
 
-export type UseSerializers = {
-    UseSerializers: number;
+export type Sealed = {
+    sealed: number;
 }
 
 export type Select = {
@@ -1641,20 +1639,15 @@ export type Union = {
     union: number;
 }
 
-export type Unowned = {
-    unowned: number;
-}
-
-export type Unsafe = {
-    unsafe: number;
-}
-
 export type Obj6 = {
     UUID:           UUID;
+    UseSerializers: UseSerializers;
     Utf8JsonReader: Utf8JSONReader;
     Utf8JsonWriter: Utf8JSONWriter;
     YES:            Yes;
     dummy:          number;
+    unowned:        Unowned;
+    unsafe:         Unsafe;
     unsigned:       Unsigned;
     ushort:         Ushort;
     using:          Using;
@@ -1677,6 +1670,10 @@ export type UUID = {
     UUID: number;
 }
 
+export type UseSerializers = {
+    UseSerializers: number;
+}
+
 export type Utf8JSONReader = {
     Utf8JsonReader: number;
 }
@@ -1689,6 +1686,14 @@ export type Yes = {
     YES: number;
 }
 
+export type Unowned = {
+    unowned: number;
+}
+
+export type Unsafe = {
+    unsafe: number;
+}
+
 export type Unsigned = {
     unsigned: number;
 }
@@ -1849,7 +1854,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -1860,7 +1865,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
@@ -2487,7 +2492,6 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "MarshalJSON", js: "MarshalJSON", typ: r("MarshalJSON") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
@@ -2525,6 +2529,7 @@ const typeMap: any = {
         { json: "list", js: "list", typ: r("List") },
         { json: "lock", js: "lock", typ: r("Lock") },
         { json: "long", js: "long", typ: r("Long") },
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: r("MakeDictEncoder") },
         { json: "map", js: "map", typ: r("Map") },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: r("MetadataPropertyHandling") },
         { json: "module", js: "module", typ: r("Module") },
@@ -2534,7 +2539,6 @@ const typeMap: any = {
         { json: "native", js: "native", typ: r("Native") },
         { json: "new", js: "new", typ: r("New") },
         { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -2590,9 +2594,6 @@ const typeMap: any = {
     "MarshalJSON": o([
         { json: "MarshalJSON", js: "MarshalJSON", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
-    ], false),
     "Goto": o([
         { json: "goto", js: "goto", typ: i(0) },
     ], false),
@@ -2701,6 +2702,9 @@ const typeMap: any = {
     "Long": o([
         { json: "long", js: "long", typ: i(0) },
     ], false),
+    "MakeDictEncoder": o([
+        { json: "makeDictEncoder", js: "makeDictEncoder", typ: i(0) },
+    ], false),
     "Map": o([
         { json: "map", js: "map", typ: i(0) },
     ], false),
@@ -2728,10 +2732,8 @@ const typeMap: any = {
     "Newtonsoft": o([
         { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
     ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
@@ -2740,8 +2742,8 @@ const typeMap: any = {
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
         { 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: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
         { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
@@ -2796,7 +2798,9 @@ 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") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2822,8 +2826,8 @@ const typeMap: any = {
     "RegExp": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
@@ -2987,12 +2991,10 @@ const typeMap: any = {
     "Sbyte": o([
         { json: "sbyte", js: "sbyte", typ: i(0) },
     ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", 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") },
@@ -3009,8 +3011,8 @@ const typeMap: any = {
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: r("UnmarshalJSON") },
-        { 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") },
@@ -3055,8 +3057,6 @@ const typeMap: any = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -3064,6 +3064,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),
@@ -3112,8 +3115,8 @@ const typeMap: any = {
     "UnmarshalJSON": o([
         { json: "UnmarshalJSON", js: "UnmarshalJSON", typ: i(0) },
     ], false),
-    "UseSerializers": o([
-        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
     ], false),
     "Select": o([
         { json: "select", js: "select", typ: i(0) },
@@ -3247,18 +3250,15 @@ const typeMap: any = {
     "Union": o([
         { json: "union", js: "union", typ: i(0) },
     ], false),
-    "Unowned": o([
-        { json: "unowned", js: "unowned", typ: i(0) },
-    ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
     "Obj6": o([
         { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
         { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "unowned", js: "unowned", typ: r("Unowned") },
+        { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
         { json: "using", js: "using", typ: r("Using") },
@@ -3279,6 +3279,9 @@ const typeMap: any = {
     "UUID": o([
         { json: "UUID", js: "UUID", typ: i(0) },
     ], false),
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
+    ], false),
     "Utf8JSONReader": o([
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
     ], false),
@@ -3288,6 +3291,12 @@ const typeMap: any = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "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),
diff --git a/base/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts
index eeab77a..c089428 100644
--- a/base/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts
index 550a950..6256d22 100644
--- a/base/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/list.json/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts
index 2bcc4e2..29495b7 100644
--- a/base/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/name-style.json/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
index 26d8381..6eec1bc 100644
--- a/base/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
@@ -384,7 +384,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -395,7 +395,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
index a1b089d..64b4ccb 100644
--- a/base/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts
index 111e281..500130f 100644
--- a/base/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/no-classes.json/default/TopLevel.ts
@@ -105,7 +105,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -116,7 +116,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
index 53012a2..5875700 100644
--- a/base/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
@@ -244,7 +244,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -255,7 +255,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts
index 5acf2f5..64d931a 100644
--- a/base/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/number-map.json/default/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.ts b/head/typescript/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.ts
index 2bb52b9..cf9f14e 100644
--- a/base/typescript/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/number-map.json/readonly-true--24da4fc107df/TopLevel.ts
@@ -107,7 +107,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -118,7 +118,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts
index 4629d9d..7700cc4 100644
--- a/base/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/omit-empty.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts
index ed9914b..7129831 100644
--- a/base/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/optional-union.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts
index 14ba2bd..6c79144 100644
--- a/base/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.ts
@@ -113,7 +113,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -124,7 +124,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts
index ffabdda..2bab583 100644
--- a/base/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/php-validation.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts
index 2c52978..7c6b8b7 100644
--- a/base/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/recursive.json/default/TopLevel.ts
@@ -226,7 +226,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -237,7 +237,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts
index 61d8ad3..412ebc2 100644
--- a/base/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/simple-identifiers.json/default/TopLevel.ts
@@ -115,7 +115,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -126,7 +126,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts
index 9bf4778..e02d007 100644
--- a/base/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.ts
@@ -114,7 +114,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -125,7 +125,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts
index 3f729e7..613ee28 100644
--- a/base/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/unions.json/default/TopLevel.ts
@@ -117,7 +117,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -128,7 +128,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts
index 56df2ba..f2d8eba 100644
--- a/base/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/url.json/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts
index 450efa7..4d6119e 100644
--- a/base/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/uuids.json/default/TopLevel.ts
@@ -112,7 +112,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -123,7 +123,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts
index f045824..1b8ecff 100644
--- a/base/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts
index 2c5c49a..42c7f9f 100644
--- a/base/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/copy-with-property.json/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts
index 68047d4..28e8952 100644
--- a/base/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/getting-started.json/default/TopLevel.ts
@@ -108,7 +108,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -119,7 +119,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts
index f9be8e3..fd0f6ca 100644
--- a/base/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/github-events.json/default/TopLevel.ts
@@ -393,7 +393,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -404,7 +404,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
index e3ddd80..44e54d1 100644
--- a/base/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
@@ -139,7 +139,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -150,7 +150,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
index acb9d31..267ba8b 100644
--- a/base/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/null-safe.json/default/TopLevel.ts
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts
index 1cfdd69..b26c2a4 100644
--- a/base/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/objc-control-characters.json/default/TopLevel.ts
@@ -111,7 +111,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -122,7 +122,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts
index f442069..64a96cd 100644
--- a/base/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/pokedex.json/default/TopLevel.ts
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts
index 871aee4..ca4c83e 100644
--- a/base/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/pokedex.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -136,7 +136,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -147,7 +147,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts
index 49a90d6..ab3a9d9 100644
--- a/base/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/reddit.json/default/TopLevel.ts
@@ -233,7 +233,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -244,7 +244,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts
index 73b065e..5b4b68c 100644
--- a/base/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/simple-object.json/default/TopLevel.ts
@@ -109,7 +109,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
index e1ac35d..92ce930 100644
--- a/base/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
@@ -177,7 +177,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -188,7 +188,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
index 38eedf1..eed9604 100644
--- a/base/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
@@ -120,7 +120,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -131,7 +131,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index dd9e267..13747bf 100644
--- a/base/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -189,7 +189,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
         if (val === null || typeof val !== "object" || Array.isArray(val)) {
             return invalidValue(l(ref || "object"), val, key, parent);
         }
-        const result: any = {};
+        const result: any = Object.create(null);
         Object.getOwnPropertyNames(props).forEach(key => {
             const prop = props[key];
             const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
@@ -200,7 +200,7 @@ function transform(val: any, typ: any, getProps: any, key: any = '', parent: any
                 result[key] = transform(val[key], additional, getProps, key, ref);
             }
         });
-        return result;
+        return Object.setPrototypeOf(result, Object.prototype);
     }
 
     if (typ === "any") return val;
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/00ec5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
index c6fce40..3778fdf 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export const Type = S.Literal(
     "string",
@@ -56,7 +74,7 @@ export class Property extends S.Class<Property>("Property")({
 }) {}
 
 export class Provider extends S.Class<Provider>("Provider")({
-    "properties": S.Record({ key: S.String, value: Property}),
+    "properties": mapSchema(Property),
 }) {}
 
 export class Definitions extends S.Class<Definitions>("Definitions")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/033b1.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/09f54.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/09f54.json/default/TopLevel.ts
index 247697e..70f3102 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/09f54.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/09f54.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Description extends S.Class<Description>("Description")({
     "base_period": S.String,
@@ -14,6 +32,6 @@ export class Datum extends S.Class<Datum>("Datum")({
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "data": S.Record({ key: S.String, value: Datum}),
+    "data": mapSchema(Datum),
     "description": Description,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/167d6.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/43eaf.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/5f3a1.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6260a.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/70c77.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/75912.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/76ae1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
index 5d1b840..9e3da0d 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export const FormatEnum = S.Literal(
     "string",
@@ -80,7 +98,7 @@ export class Property extends S.Class<Property>("Property")({
 }) {}
 
 export class Article extends S.Class<Article>("Article")({
-    "properties": S.Record({ key: S.String, value: Property}),
+    "properties": mapSchema(Property),
 }) {}
 
 export class Definitions extends S.Class<Definitions>("Definitions")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7d397.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7d397.json/default/TopLevel.ts
index ed07ac3..834d111 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7d397.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7d397.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export const Type = S.Literal(
     "string",
@@ -67,7 +85,7 @@ export class Property extends S.Class<Property>("Property")({
 }) {}
 
 export class List extends S.Class<List>("List")({
-    "properties": S.Record({ key: S.String, value: Property}),
+    "properties": mapSchema(Property),
 }) {}
 
 export class Definitions extends S.Class<Definitions>("Definitions")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index 70c0576..f9e2f20 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export const Language = S.Literal(
     "Markdown",
@@ -26,7 +44,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
     "commits_url": S.String,
     "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
     "description": S.NullOr(S.String),
-    "files": S.Record({ key: S.String, value: File}),
+    "files": mapSchema(File),
     "forks_url": S.String,
     "git_pull_url": S.String,
     "git_push_url": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9617f.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a9691.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/ac944.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/c0356.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/c0356.json/default/TopLevel.ts
index ea7888c..e9c32ba 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/c0356.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/c0356.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Description extends S.Class<Description>("Description")({
     "base_period": S.String,
@@ -13,6 +31,6 @@ export class Datum extends S.Class<Datum>("Datum")({
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "data": S.Record({ key: S.String, value: Datum}),
+    "data": mapSchema(Datum),
     "description": Description,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cb81e.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
index eeb3174..40f6fa2 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cb81e.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Description extends S.Class<Description>("Description")({
     "base_period": S.String,
@@ -9,6 +27,6 @@ export class Description extends S.Class<Description>("Description")({
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "data": S.Record({ key: S.String, value: S.String}),
+    "data": mapSchema(S.String),
     "description": Description,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cd463.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
index f216282..4387456 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cfbce.json/default/TopLevel.ts
@@ -1,8 +1,26 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "base": S.String,
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
-    "rates": S.Record({ key: S.String, value: S.Number}),
+    "rates": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e324e.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e324e.json/default/TopLevel.ts
index e290adb..d0d7497 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e324e.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e324e.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export const Type = S.Literal(
     "string",
@@ -61,7 +79,7 @@ export class Property extends S.Class<Property>("Property")({
 }) {}
 
 export class Rate extends S.Class<Rate>("Rate")({
-    "properties": S.Record({ key: S.String, value: Property}),
+    "properties": mapSchema(Property),
 }) {}
 
 export class Definitions extends S.Class<Definitions>("Definitions")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/ed095.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/ed095.json/default/TopLevel.ts
index a3dc3b3..13465fe 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/ed095.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/ed095.json/default/TopLevel.ts
@@ -1,4 +1,22 @@
 import * as S from "effect/Schema";
 
-export const TopLevel = S.Record({ key: S.String, value: S.String});
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
+export const TopLevel = mapSchema(S.String);
 export type TopLevel = S.Schema.Type<typeof TopLevel>;
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/fd329.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/fd329.json/default/TopLevel.ts
index 247697e..70f3102 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/fd329.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/fd329.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Description extends S.Class<Description>("Description")({
     "base_period": S.String,
@@ -14,6 +32,6 @@ export class Datum extends S.Class<Datum>("Datum")({
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "data": S.Record({ key: S.String, value: Datum}),
+    "data": mapSchema(Datum),
     "description": Description,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug2037.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
index a6159e9..f965285 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug2037.json/default/TopLevel.ts
@@ -1,17 +1,35 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Reward extends S.Class<Reward>("Reward")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
 export class Objective extends S.Class<Objective>("Objective")({
-    "rewards": S.Record({ key: S.String, value: Reward}),
+    "rewards": mapSchema(Reward),
 }) {}
 
 export class MissionSpec extends S.Class<MissionSpec>("MissionSpec")({
-    "objectives": S.Record({ key: S.String, value: Objective}),
+    "objectives": mapSchema(Objective),
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "mission_specs": S.Record({ key: S.String, value: MissionSpec}),
+    "mission_specs": mapSchema(MissionSpec),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
index edbfaa7..2368266 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevelValue extends S.Class<TopLevelValue>("TopLevelValue")({
     "channel_id": S.String.pipe(S.pattern(/^-?\d+$/)),
@@ -9,5 +27,5 @@ export class TopLevelValue extends S.Class<TopLevelValue>("TopLevelValue")({
     "id": S.Int,
 }) {}
 
-export const TopLevel = S.Record({ key: S.String, value: TopLevelValue});
+export const TopLevel = mapSchema(TopLevelValue);
 export type TopLevel = S.Schema.Type<typeof TopLevel>;
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
index 6f306f6..3d30810 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/coin-pairs.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Pair extends S.Class<Pair>("Pair")({
     "decimal_places": S.Int,
@@ -13,6 +31,6 @@ export class Pair extends S.Class<Pair>("Pair")({
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "pairs": S.Record({ key: S.String, value: Pair}),
+    "pairs": mapSchema(Pair),
     "server_time": S.Int,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
index e2e21a7..aa2b601 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations1.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Interacinar extends S.Class<Interacinar>("Interacinar")({
     "assapan": S.Number,
@@ -293,18 +311,18 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "citrated": S.Int,
     "clinodome": S.Array(S.Union(S.Number, S.String)),
     "coadjust": S.Array(S.Union(S.Number, CoadjustClass)),
-    "consilience": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}))),
-    "constructor": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
-    "continuative": S.Array(S.Union(S.Record({ key: S.String, value: S.Int}), S.String)),
+    "consilience": S.Array(S.Union(S.Number, mapSchema(S.Int))),
+    "constructor": S.Array(S.Union(S.Boolean, mapSchema(S.NullOr(S.Int)))),
+    "continuative": S.Array(S.Union(mapSchema(S.Int), S.String)),
     "credulity": S.Array(S.Union(S.Int, S.String, CredulityClass)),
-    "creviced": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.Int}), S.String)),
+    "creviced": S.Array(S.Union(S.Boolean, mapSchema(S.Int), S.String)),
     "cubiculum": S.Array(S.Array(S.NullOr(S.Int))),
     "deruralize": S.Array(S.Union(S.Array(S.Null), S.Boolean, DeruralizeClass)),
     "diaereses": S.Array(S.Union(S.Array(S.Int), S.Boolean, DiaereseClass)),
     "dissolution": S.Array(S.NullOr(S.Array(S.Null))),
     "downstroke": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.String)),
     "electrotautomerism": S.Array(S.NullOr(S.Number)),
-    "eleutheromania": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}), S.String)),
+    "eleutheromania": S.Array(S.Union(S.Number, mapSchema(S.Int), S.String)),
     "encrust": Encrust,
     "entomoid": S.Array(S.Union(S.Int, CimeliaClass)),
     "epipaleolithic": S.Array(S.Union(S.Array(S.Int), S.Number)),
@@ -314,10 +332,10 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "flagmaking": S.Array(S.Union(S.Boolean, S.Number, FlagmakingClass)),
     "fluorometer": S.Array(S.Union(S.Int, S.String, S.Null)),
     "fulsome": S.Array(S.NullOr(S.Int)),
-    "fuzzy": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "fuzzy": S.Array(S.Union(S.Int, mapSchema(S.NullOr(S.Int)))),
     "gardenwards": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.String)),
-    "generalissimo": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.Int}), S.Null)),
-    "habeas": S.Array(S.NullOr(S.Record({ key: S.String, value: S.Int}))),
+    "generalissimo": S.Array(S.Union(S.Boolean, mapSchema(S.Int), S.Null)),
+    "habeas": S.Array(S.NullOr(mapSchema(S.Int))),
     "hemicrystalline": S.Array(S.Union(S.String, CimeliaClass)),
     "hemocoele": S.Array(S.Union(S.Array(S.Int), HemocoeleClass)),
     "hoister": S.Array(S.Union(S.String, CimeliaClass, S.Null)),
@@ -328,5 +346,5 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "intentiveness": S.Array(S.Union(S.Number, S.String, CimeliaClass)),
     "interacinar": Interacinar,
     "intercorrelation": S.Array(S.NullOr(S.Array(S.Int))),
-    "jacutinga": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "jacutinga": S.Array(S.Union(S.Array(S.Int), mapSchema(S.NullOr(S.Int)))),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations1.json/just-schema-true--8c4ca457bcba/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations1.json/just-schema-true--8c4ca457bcba/TopLevel.ts
index e2e21a7..aa2b601 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations1.json/just-schema-true--8c4ca457bcba/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations1.json/just-schema-true--8c4ca457bcba/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Interacinar extends S.Class<Interacinar>("Interacinar")({
     "assapan": S.Number,
@@ -293,18 +311,18 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "citrated": S.Int,
     "clinodome": S.Array(S.Union(S.Number, S.String)),
     "coadjust": S.Array(S.Union(S.Number, CoadjustClass)),
-    "consilience": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}))),
-    "constructor": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
-    "continuative": S.Array(S.Union(S.Record({ key: S.String, value: S.Int}), S.String)),
+    "consilience": S.Array(S.Union(S.Number, mapSchema(S.Int))),
+    "constructor": S.Array(S.Union(S.Boolean, mapSchema(S.NullOr(S.Int)))),
+    "continuative": S.Array(S.Union(mapSchema(S.Int), S.String)),
     "credulity": S.Array(S.Union(S.Int, S.String, CredulityClass)),
-    "creviced": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.Int}), S.String)),
+    "creviced": S.Array(S.Union(S.Boolean, mapSchema(S.Int), S.String)),
     "cubiculum": S.Array(S.Array(S.NullOr(S.Int))),
     "deruralize": S.Array(S.Union(S.Array(S.Null), S.Boolean, DeruralizeClass)),
     "diaereses": S.Array(S.Union(S.Array(S.Int), S.Boolean, DiaereseClass)),
     "dissolution": S.Array(S.NullOr(S.Array(S.Null))),
     "downstroke": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.String)),
     "electrotautomerism": S.Array(S.NullOr(S.Number)),
-    "eleutheromania": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}), S.String)),
+    "eleutheromania": S.Array(S.Union(S.Number, mapSchema(S.Int), S.String)),
     "encrust": Encrust,
     "entomoid": S.Array(S.Union(S.Int, CimeliaClass)),
     "epipaleolithic": S.Array(S.Union(S.Array(S.Int), S.Number)),
@@ -314,10 +332,10 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "flagmaking": S.Array(S.Union(S.Boolean, S.Number, FlagmakingClass)),
     "fluorometer": S.Array(S.Union(S.Int, S.String, S.Null)),
     "fulsome": S.Array(S.NullOr(S.Int)),
-    "fuzzy": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "fuzzy": S.Array(S.Union(S.Int, mapSchema(S.NullOr(S.Int)))),
     "gardenwards": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.String)),
-    "generalissimo": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.Int}), S.Null)),
-    "habeas": S.Array(S.NullOr(S.Record({ key: S.String, value: S.Int}))),
+    "generalissimo": S.Array(S.Union(S.Boolean, mapSchema(S.Int), S.Null)),
+    "habeas": S.Array(S.NullOr(mapSchema(S.Int))),
     "hemicrystalline": S.Array(S.Union(S.String, CimeliaClass)),
     "hemocoele": S.Array(S.Union(S.Array(S.Int), HemocoeleClass)),
     "hoister": S.Array(S.Union(S.String, CimeliaClass, S.Null)),
@@ -328,5 +346,5 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "intentiveness": S.Array(S.Union(S.Number, S.String, CimeliaClass)),
     "interacinar": Interacinar,
     "intercorrelation": S.Array(S.NullOr(S.Array(S.Int))),
-    "jacutinga": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "jacutinga": S.Array(S.Union(S.Array(S.Int), mapSchema(S.NullOr(S.Int)))),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations2.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
index 79d276d..35819f7 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations2.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class OskarClass extends S.Class<OskarClass>("OskarClass")({
     "Acrobates": S.Null,
@@ -233,8 +251,8 @@ export class AlleviateClass extends S.Class<AlleviateClass>("AlleviateClass")({
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "Abranchiata": S.Array(S.Union(S.Array(S.Int), S.Int, S.Null)),
-    "academe": S.Array(S.Union(S.Array(S.Int), S.Int, S.Record({ key: S.String, value: S.Int}))),
-    "acquirable": S.Array(S.Union(S.Array(S.NullOr(S.Int)), S.Record({ key: S.String, value: S.Int}))),
+    "academe": S.Array(S.Union(S.Array(S.Int), S.Int, mapSchema(S.Int))),
+    "acquirable": S.Array(S.Union(S.Array(S.NullOr(S.Int)), mapSchema(S.Int))),
     "aerometry": S.Array(S.Union(S.Boolean, S.Number)),
     "alexin": S.Array(S.Union(S.Array(S.Int), S.Boolean)),
     "alleviate": S.Array(S.Union(S.Array(S.NullOr(S.Int)), AlleviateClass)),
@@ -243,38 +261,38 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "amphithyron": S.Array(S.NullOr(Amphithyron)),
     "Andriana": S.Array(S.NullOr(S.String)),
     "ankee": S.Array(S.Union(S.Array(S.Int), S.Int, AnkeeClass)),
-    "annihilator": S.Array(S.NullOr(S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "annihilator": S.Array(S.NullOr(mapSchema(S.NullOr(S.Int)))),
     "annulose": S.Null,
     "Ansarie": S.Array(S.Union(S.Array(S.Int), AnsarieClass, S.Null)),
     "aphasia": S.Array(S.Union(S.Array(S.Int), S.Int)),
     "asprawl": S.Array(S.Union(S.Number, S.String)),
     "attractive": S.Array(S.NullOr(S.Boolean)),
-    "barksome": S.Record({ key: S.String, value: S.Int}),
+    "barksome": mapSchema(S.Int),
     "bedesman": S.Array(S.Union(S.Boolean, S.Number, S.String)),
     "belard": S.Array(S.Union(S.Array(S.Int), S.Number, Rebecca)),
-    "bocking": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Record({ key: S.String, value: S.Int}))),
-    "brawlingly": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "bocking": S.Array(S.Union(S.Array(S.Int), S.Boolean, mapSchema(S.Int))),
+    "brawlingly": S.Array(S.Union(S.Array(S.Null), mapSchema(S.NullOr(S.Int)))),
     "brookie": S.Array(S.Union(S.Array(S.Int), Rebecca)),
     "bumboatman": S.Array(S.Union(S.Array(S.Null), S.String, S.Null)),
     "bystreet": S.Array(S.Null),
     "calaverite": S.Array(S.Union(S.Array(S.Int), S.String)),
-    "catallactic": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.Record({ key: S.String, value: S.Int}))),
-    "cemental": S.Array(S.Union(S.Array(S.Int), S.Number, S.Record({ key: S.String, value: S.Int}))),
+    "catallactic": S.Array(S.Union(S.Array(S.Null), S.Boolean, mapSchema(S.Int))),
+    "cemental": S.Array(S.Union(S.Array(S.Int), S.Number, mapSchema(S.Int))),
     "Chytridiaceae": S.Array(S.Union(S.Boolean, ChytridiaceaeClass, S.Null)),
     "Discordia": S.Array(S.Union(S.Array(S.Int), DiscordiaClass)),
     "Endomyces": S.Array(S.Union(S.Int, S.String)),
     "Epinephelidae": S.Array(S.Union(S.Boolean, S.Int, S.String)),
-    "Eupatorium": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.Int}))),
+    "Eupatorium": S.Array(S.Union(S.Array(S.Null), mapSchema(S.Int))),
     "Gryphosaurus": S.Array(S.Union(S.Array(S.Int), S.String, GryphosaurusClass)),
-    "Koryak": S.Array(S.Union(S.Record({ key: S.String, value: S.NullOr(S.Int)}), S.String)),
+    "Koryak": S.Array(S.Union(mapSchema(S.NullOr(S.Int)), S.String)),
     "Lavinia": S.Array(S.Union(S.String, LaviniaClass)),
     "Oskar": S.Array(S.Union(S.Array(S.Int), OskarClass)),
     "Rebecca": S.Array(S.Union(S.Int, S.String, Rebecca)),
     "Rhomboganoidei": S.Array(S.Union(S.Array(S.Int), S.String, Rebecca)),
     "Rigsmal": S.Boolean,
     "Ruellia": S.Array(S.Union(S.Boolean, S.String, Rebecca)),
-    "School": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "School": S.Array(S.Union(S.Int, mapSchema(S.Int), S.Null)),
     "Shakespearolater": S.Array(S.Union(S.Array(S.Int), S.Number, S.String)),
     "Svan": S.Array(S.Number),
-    "Wayao": S.Record({ key: S.String, value: S.Number}),
+    "Wayao": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations2.json/just-schema-true--8c4ca457bcba/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations2.json/just-schema-true--8c4ca457bcba/TopLevel.ts
index 79d276d..35819f7 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations2.json/just-schema-true--8c4ca457bcba/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations2.json/just-schema-true--8c4ca457bcba/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class OskarClass extends S.Class<OskarClass>("OskarClass")({
     "Acrobates": S.Null,
@@ -233,8 +251,8 @@ export class AlleviateClass extends S.Class<AlleviateClass>("AlleviateClass")({
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "Abranchiata": S.Array(S.Union(S.Array(S.Int), S.Int, S.Null)),
-    "academe": S.Array(S.Union(S.Array(S.Int), S.Int, S.Record({ key: S.String, value: S.Int}))),
-    "acquirable": S.Array(S.Union(S.Array(S.NullOr(S.Int)), S.Record({ key: S.String, value: S.Int}))),
+    "academe": S.Array(S.Union(S.Array(S.Int), S.Int, mapSchema(S.Int))),
+    "acquirable": S.Array(S.Union(S.Array(S.NullOr(S.Int)), mapSchema(S.Int))),
     "aerometry": S.Array(S.Union(S.Boolean, S.Number)),
     "alexin": S.Array(S.Union(S.Array(S.Int), S.Boolean)),
     "alleviate": S.Array(S.Union(S.Array(S.NullOr(S.Int)), AlleviateClass)),
@@ -243,38 +261,38 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "amphithyron": S.Array(S.NullOr(Amphithyron)),
     "Andriana": S.Array(S.NullOr(S.String)),
     "ankee": S.Array(S.Union(S.Array(S.Int), S.Int, AnkeeClass)),
-    "annihilator": S.Array(S.NullOr(S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "annihilator": S.Array(S.NullOr(mapSchema(S.NullOr(S.Int)))),
     "annulose": S.Null,
     "Ansarie": S.Array(S.Union(S.Array(S.Int), AnsarieClass, S.Null)),
     "aphasia": S.Array(S.Union(S.Array(S.Int), S.Int)),
     "asprawl": S.Array(S.Union(S.Number, S.String)),
     "attractive": S.Array(S.NullOr(S.Boolean)),
-    "barksome": S.Record({ key: S.String, value: S.Int}),
+    "barksome": mapSchema(S.Int),
     "bedesman": S.Array(S.Union(S.Boolean, S.Number, S.String)),
     "belard": S.Array(S.Union(S.Array(S.Int), S.Number, Rebecca)),
-    "bocking": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Record({ key: S.String, value: S.Int}))),
-    "brawlingly": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
+    "bocking": S.Array(S.Union(S.Array(S.Int), S.Boolean, mapSchema(S.Int))),
+    "brawlingly": S.Array(S.Union(S.Array(S.Null), mapSchema(S.NullOr(S.Int)))),
     "brookie": S.Array(S.Union(S.Array(S.Int), Rebecca)),
     "bumboatman": S.Array(S.Union(S.Array(S.Null), S.String, S.Null)),
     "bystreet": S.Array(S.Null),
     "calaverite": S.Array(S.Union(S.Array(S.Int), S.String)),
-    "catallactic": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.Record({ key: S.String, value: S.Int}))),
-    "cemental": S.Array(S.Union(S.Array(S.Int), S.Number, S.Record({ key: S.String, value: S.Int}))),
+    "catallactic": S.Array(S.Union(S.Array(S.Null), S.Boolean, mapSchema(S.Int))),
+    "cemental": S.Array(S.Union(S.Array(S.Int), S.Number, mapSchema(S.Int))),
     "Chytridiaceae": S.Array(S.Union(S.Boolean, ChytridiaceaeClass, S.Null)),
     "Discordia": S.Array(S.Union(S.Array(S.Int), DiscordiaClass)),
     "Endomyces": S.Array(S.Union(S.Int, S.String)),
     "Epinephelidae": S.Array(S.Union(S.Boolean, S.Int, S.String)),
-    "Eupatorium": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.Int}))),
+    "Eupatorium": S.Array(S.Union(S.Array(S.Null), mapSchema(S.Int))),
     "Gryphosaurus": S.Array(S.Union(S.Array(S.Int), S.String, GryphosaurusClass)),
-    "Koryak": S.Array(S.Union(S.Record({ key: S.String, value: S.NullOr(S.Int)}), S.String)),
+    "Koryak": S.Array(S.Union(mapSchema(S.NullOr(S.Int)), S.String)),
     "Lavinia": S.Array(S.Union(S.String, LaviniaClass)),
     "Oskar": S.Array(S.Union(S.Array(S.Int), OskarClass)),
     "Rebecca": S.Array(S.Union(S.Int, S.String, Rebecca)),
     "Rhomboganoidei": S.Array(S.Union(S.Array(S.Int), S.String, Rebecca)),
     "Rigsmal": S.Boolean,
     "Ruellia": S.Array(S.Union(S.Boolean, S.String, Rebecca)),
-    "School": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "School": S.Array(S.Union(S.Int, mapSchema(S.Int), S.Null)),
     "Shakespearolater": S.Array(S.Union(S.Array(S.Int), S.Number, S.String)),
     "Svan": S.Array(S.Number),
-    "Wayao": S.Record({ key: S.String, value: S.Number}),
+    "Wayao": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations3.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
index 48cb91d..856d6e0 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations3.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class PrefreshmanClass extends S.Class<PrefreshmanClass>("PrefreshmanClass")({
     "azorubine": S.Null,
@@ -340,7 +358,7 @@ export class JurorClass extends S.Class<JurorClass>("JurorClass")({
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "juror": S.Array(S.Union(S.Boolean, JurorClass)),
-    "kongoni": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.Int}))),
+    "kongoni": S.Array(S.Union(S.Array(S.Int), mapSchema(S.Int))),
     "ladronism": S.Array(S.Union(S.Number, S.String, LadronismClass)),
     "landlubberly": S.Array(S.Union(S.Boolean, S.Int, LandlubberlyClass)),
     "listener": S.Array(S.Union(S.Array(S.Null), S.Int)),
@@ -361,24 +379,24 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "nonvaluation": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.Number)),
     "occupationalist": S.Array(S.Union(S.Array(S.Null), OccupationalistClass, S.Null)),
     "outrival": S.Array(S.Union(S.Number, OutrivalClass, S.Null)),
-    "paleographically": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
-    "pamphletwise": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.Int}), S.String)),
+    "paleographically": S.Array(S.Union(S.Number, mapSchema(S.NullOr(S.Int)))),
+    "pamphletwise": S.Array(S.Union(S.Int, mapSchema(S.Int), S.String)),
     "pediatrics": S.Array(S.Union(S.Boolean, S.Number, S.Null)),
     "perceptive": S.Array(S.Boolean),
     "piaculum": S.Array(S.Union(S.Number, PiaculumClass)),
     "piccadilly": S.Array(S.Union(S.Number, S.String, S.Null)),
     "piffler": S.Array(S.Union(S.Array(S.Null), MonaziteClass)),
     "pithful": S.Array(S.Union(S.Boolean, S.Int, S.Null)),
-    "placuntitis": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.Int}))),
-    "plectopterous": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}))),
+    "placuntitis": S.Array(S.Union(S.Int, mapSchema(S.Int))),
+    "plectopterous": S.Array(S.Union(S.Number, mapSchema(S.Int))),
     "pneumocele": S.Array(S.NullOr(Pneumocele)),
     "poliorcetic": S.Array(S.Union(S.Boolean, MonaziteClass)),
-    "poormaster": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "poormaster": S.Array(S.Union(S.Array(S.Int), mapSchema(S.Int), S.Null)),
     "potwhisky": S.Array(S.Union(S.Int, PotwhiskyClass, S.Null)),
     "practicalizer": S.Array(S.Union(S.Array(S.Null), S.String, MonaziteClass)),
     "prefreshman": S.Array(S.Union(S.Array(S.Null), S.String, PrefreshmanClass)),
     "prehensility": S.Array(S.Union(S.Array(S.Null), S.Boolean, MonaziteClass)),
     "prevoidance": S.Array(S.Union(S.Array(S.Int), S.Int, MonaziteClass)),
-    "probant": S.Array(S.Record({ key: S.String, value: S.NullOr(S.Int)})),
+    "probant": S.Array(mapSchema(S.NullOr(S.Int))),
     "protext": S.Array(S.Union(S.Array(S.Int), S.Boolean, MonaziteClass)),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations3.json/just-schema-true--8c4ca457bcba/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations3.json/just-schema-true--8c4ca457bcba/TopLevel.ts
index 48cb91d..856d6e0 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations3.json/just-schema-true--8c4ca457bcba/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations3.json/just-schema-true--8c4ca457bcba/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class PrefreshmanClass extends S.Class<PrefreshmanClass>("PrefreshmanClass")({
     "azorubine": S.Null,
@@ -340,7 +358,7 @@ export class JurorClass extends S.Class<JurorClass>("JurorClass")({
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "juror": S.Array(S.Union(S.Boolean, JurorClass)),
-    "kongoni": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.Int}))),
+    "kongoni": S.Array(S.Union(S.Array(S.Int), mapSchema(S.Int))),
     "ladronism": S.Array(S.Union(S.Number, S.String, LadronismClass)),
     "landlubberly": S.Array(S.Union(S.Boolean, S.Int, LandlubberlyClass)),
     "listener": S.Array(S.Union(S.Array(S.Null), S.Int)),
@@ -361,24 +379,24 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "nonvaluation": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.Number)),
     "occupationalist": S.Array(S.Union(S.Array(S.Null), OccupationalistClass, S.Null)),
     "outrival": S.Array(S.Union(S.Number, OutrivalClass, S.Null)),
-    "paleographically": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.NullOr(S.Int)}))),
-    "pamphletwise": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.Int}), S.String)),
+    "paleographically": S.Array(S.Union(S.Number, mapSchema(S.NullOr(S.Int)))),
+    "pamphletwise": S.Array(S.Union(S.Int, mapSchema(S.Int), S.String)),
     "pediatrics": S.Array(S.Union(S.Boolean, S.Number, S.Null)),
     "perceptive": S.Array(S.Boolean),
     "piaculum": S.Array(S.Union(S.Number, PiaculumClass)),
     "piccadilly": S.Array(S.Union(S.Number, S.String, S.Null)),
     "piffler": S.Array(S.Union(S.Array(S.Null), MonaziteClass)),
     "pithful": S.Array(S.Union(S.Boolean, S.Int, S.Null)),
-    "placuntitis": S.Array(S.Union(S.Int, S.Record({ key: S.String, value: S.Int}))),
-    "plectopterous": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}))),
+    "placuntitis": S.Array(S.Union(S.Int, mapSchema(S.Int))),
+    "plectopterous": S.Array(S.Union(S.Number, mapSchema(S.Int))),
     "pneumocele": S.Array(S.NullOr(Pneumocele)),
     "poliorcetic": S.Array(S.Union(S.Boolean, MonaziteClass)),
-    "poormaster": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "poormaster": S.Array(S.Union(S.Array(S.Int), mapSchema(S.Int), S.Null)),
     "potwhisky": S.Array(S.Union(S.Int, PotwhiskyClass, S.Null)),
     "practicalizer": S.Array(S.Union(S.Array(S.Null), S.String, MonaziteClass)),
     "prefreshman": S.Array(S.Union(S.Array(S.Null), S.String, PrefreshmanClass)),
     "prehensility": S.Array(S.Union(S.Array(S.Null), S.Boolean, MonaziteClass)),
     "prevoidance": S.Array(S.Union(S.Array(S.Int), S.Int, MonaziteClass)),
-    "probant": S.Array(S.Record({ key: S.String, value: S.NullOr(S.Int)})),
+    "probant": S.Array(mapSchema(S.NullOr(S.Int))),
     "protext": S.Array(S.Union(S.Array(S.Int), S.Boolean, MonaziteClass)),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations4.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
index d7555c4..eed8ffe 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations4.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class WrothyClass extends S.Class<WrothyClass>("WrothyClass")({
     "Aeschynanthus": S.Null,
@@ -389,7 +407,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "pulpitism": S.Array(S.Union(S.Array(S.Int), S.Number, PulpitismClass)),
     "pyodermia": S.Array(S.Union(S.Int, PyodermiaClass)),
     "quebrachine": S.Array(S.Union(S.Boolean, QuebrachineClass, S.Null)),
-    "querier": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.Int}))),
+    "querier": S.Array(S.Union(S.Boolean, mapSchema(S.Int))),
     "rebarbative": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Number)),
     "reimagine": S.Array(Reimagine),
     "ressaut": Ressaut,
@@ -398,10 +416,10 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "rewrite": S.Array(S.Union(S.Array(S.Null), S.Number, RewriteClass)),
     "saccoderm": S.Array(S.Union(S.Array(S.Int), S.String, S.Null)),
     "santir": S.Array(S.Union(S.Number, SantirClass)),
-    "saprophilous": S.Array(S.Union(S.Record({ key: S.String, value: S.Int}), S.String, S.Null)),
+    "saprophilous": S.Array(S.Union(mapSchema(S.Int), S.String, S.Null)),
     "saxten": S.Array(S.Union(S.String, SaxtenClass)),
     "scatty": S.Array(S.NullOr(Scatty)),
-    "scoffer": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "scoffer": S.Array(S.Union(S.Array(S.Null), mapSchema(S.Int), S.Null)),
     "scrampum": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Null)),
     "semantic": S.Number,
     "serpentinic": S.Array(S.Union(S.Array(S.Int), S.Number)),
@@ -409,7 +427,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "sistering": S.Array(S.Union(S.Array(S.Null), S.Int, SisteringClass)),
     "staghunting": S.Array(Staghunting),
     "stagmometer": S.Array(S.Union(S.Array(S.NullOr(S.Int)), S.String)),
-    "stimulability": S.Array(S.Union(S.Boolean, S.Int, S.Record({ key: S.String, value: S.Int}))),
+    "stimulability": S.Array(S.Union(S.Boolean, S.Int, mapSchema(S.Int))),
     "strangleable": S.Array(S.Union(S.Array(S.Null), S.Number)),
     "strenuosity": S.Array(S.Union(S.Array(S.Null), StrenuosityClass)),
     "tabaxir": S.Array(S.Union(S.Boolean, S.Number)),
@@ -419,22 +437,22 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "tortricine": S.Array(S.Union(S.Array(S.NullOr(S.Int)), QuebrachineClass)),
     "truantcy": S.Array(S.Union(S.Boolean, TruantcyClass)),
     "turgesce": S.Array(S.String),
-    "unbeginning": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.Int}), S.String)),
+    "unbeginning": S.Array(S.Union(S.Array(S.Null), mapSchema(S.Int), S.String)),
     "underdunged": S.Array(S.Number),
-    "undesirability": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.Int}), S.String)),
-    "unerasing": S.Array(S.Union(S.Array(S.Null), S.Int, S.Record({ key: S.String, value: S.Int}))),
+    "undesirability": S.Array(S.Union(S.Array(S.Int), mapSchema(S.Int), S.String)),
+    "unerasing": S.Array(S.Union(S.Array(S.Null), S.Int, mapSchema(S.Int))),
     "unguentarium": S.Array(S.Union(S.Array(S.Null), S.Int, S.Null)),
     "unimpeachably": S.Array(S.Union(S.Boolean, UnimpeachablyClass)),
-    "unmortgaged": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "unmortgaged": S.Array(S.Union(S.Number, mapSchema(S.Int), S.Null)),
     "unobstructed": S.Array(S.Union(S.Int, QuebrachineClass, S.Null)),
     "unreceptivity": S.Array(S.Union(S.Array(S.Null), S.Int, S.String)),
     "unsatisfactoriness": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Int)),
     "unsecurity": S.Array(S.Int),
     "unstressed": S.Array(S.Union(S.Boolean, S.String, UnstressedClass)),
-    "untasked": S.Array(S.Union(S.Array(S.Null), S.Number, S.Record({ key: S.String, value: S.Int}))),
-    "unvarying": S.Array(S.Union(S.Boolean, S.Number, S.Record({ key: S.String, value: S.Int}))),
+    "untasked": S.Array(S.Union(S.Array(S.Null), S.Number, mapSchema(S.Int))),
+    "unvarying": S.Array(S.Union(S.Boolean, S.Number, mapSchema(S.Int))),
     "vehemently": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.Null)),
-    "warriorship": S.Record({ key: S.String, value: S.Boolean}),
+    "warriorship": mapSchema(S.Boolean),
     "whitepot": S.Array(S.Union(S.Number, QuebrachineClass)),
     "wrothy": S.Array(S.Union(S.Array(S.Null), WrothyClass)),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/combinations4.json/just-schema-true--8c4ca457bcba/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/combinations4.json/just-schema-true--8c4ca457bcba/TopLevel.ts
index d7555c4..eed8ffe 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/combinations4.json/just-schema-true--8c4ca457bcba/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/combinations4.json/just-schema-true--8c4ca457bcba/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class WrothyClass extends S.Class<WrothyClass>("WrothyClass")({
     "Aeschynanthus": S.Null,
@@ -389,7 +407,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "pulpitism": S.Array(S.Union(S.Array(S.Int), S.Number, PulpitismClass)),
     "pyodermia": S.Array(S.Union(S.Int, PyodermiaClass)),
     "quebrachine": S.Array(S.Union(S.Boolean, QuebrachineClass, S.Null)),
-    "querier": S.Array(S.Union(S.Boolean, S.Record({ key: S.String, value: S.Int}))),
+    "querier": S.Array(S.Union(S.Boolean, mapSchema(S.Int))),
     "rebarbative": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Number)),
     "reimagine": S.Array(Reimagine),
     "ressaut": Ressaut,
@@ -398,10 +416,10 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "rewrite": S.Array(S.Union(S.Array(S.Null), S.Number, RewriteClass)),
     "saccoderm": S.Array(S.Union(S.Array(S.Int), S.String, S.Null)),
     "santir": S.Array(S.Union(S.Number, SantirClass)),
-    "saprophilous": S.Array(S.Union(S.Record({ key: S.String, value: S.Int}), S.String, S.Null)),
+    "saprophilous": S.Array(S.Union(mapSchema(S.Int), S.String, S.Null)),
     "saxten": S.Array(S.Union(S.String, SaxtenClass)),
     "scatty": S.Array(S.NullOr(Scatty)),
-    "scoffer": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "scoffer": S.Array(S.Union(S.Array(S.Null), mapSchema(S.Int), S.Null)),
     "scrampum": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Null)),
     "semantic": S.Number,
     "serpentinic": S.Array(S.Union(S.Array(S.Int), S.Number)),
@@ -409,7 +427,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "sistering": S.Array(S.Union(S.Array(S.Null), S.Int, SisteringClass)),
     "staghunting": S.Array(Staghunting),
     "stagmometer": S.Array(S.Union(S.Array(S.NullOr(S.Int)), S.String)),
-    "stimulability": S.Array(S.Union(S.Boolean, S.Int, S.Record({ key: S.String, value: S.Int}))),
+    "stimulability": S.Array(S.Union(S.Boolean, S.Int, mapSchema(S.Int))),
     "strangleable": S.Array(S.Union(S.Array(S.Null), S.Number)),
     "strenuosity": S.Array(S.Union(S.Array(S.Null), StrenuosityClass)),
     "tabaxir": S.Array(S.Union(S.Boolean, S.Number)),
@@ -419,22 +437,22 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "tortricine": S.Array(S.Union(S.Array(S.NullOr(S.Int)), QuebrachineClass)),
     "truantcy": S.Array(S.Union(S.Boolean, TruantcyClass)),
     "turgesce": S.Array(S.String),
-    "unbeginning": S.Array(S.Union(S.Array(S.Null), S.Record({ key: S.String, value: S.Int}), S.String)),
+    "unbeginning": S.Array(S.Union(S.Array(S.Null), mapSchema(S.Int), S.String)),
     "underdunged": S.Array(S.Number),
-    "undesirability": S.Array(S.Union(S.Array(S.Int), S.Record({ key: S.String, value: S.Int}), S.String)),
-    "unerasing": S.Array(S.Union(S.Array(S.Null), S.Int, S.Record({ key: S.String, value: S.Int}))),
+    "undesirability": S.Array(S.Union(S.Array(S.Int), mapSchema(S.Int), S.String)),
+    "unerasing": S.Array(S.Union(S.Array(S.Null), S.Int, mapSchema(S.Int))),
     "unguentarium": S.Array(S.Union(S.Array(S.Null), S.Int, S.Null)),
     "unimpeachably": S.Array(S.Union(S.Boolean, UnimpeachablyClass)),
-    "unmortgaged": S.Array(S.Union(S.Number, S.Record({ key: S.String, value: S.Int}), S.Null)),
+    "unmortgaged": S.Array(S.Union(S.Number, mapSchema(S.Int), S.Null)),
     "unobstructed": S.Array(S.Union(S.Int, QuebrachineClass, S.Null)),
     "unreceptivity": S.Array(S.Union(S.Array(S.Null), S.Int, S.String)),
     "unsatisfactoriness": S.Array(S.Union(S.Array(S.Int), S.Boolean, S.Int)),
     "unsecurity": S.Array(S.Int),
     "unstressed": S.Array(S.Union(S.Boolean, S.String, UnstressedClass)),
-    "untasked": S.Array(S.Union(S.Array(S.Null), S.Number, S.Record({ key: S.String, value: S.Int}))),
-    "unvarying": S.Array(S.Union(S.Boolean, S.Number, S.Record({ key: S.String, value: S.Int}))),
+    "untasked": S.Array(S.Union(S.Array(S.Null), S.Number, mapSchema(S.Int))),
+    "unvarying": S.Array(S.Union(S.Boolean, S.Number, mapSchema(S.Int))),
     "vehemently": S.Array(S.Union(S.Array(S.Null), S.Boolean, S.Null)),
-    "warriorship": S.Record({ key: S.String, value: S.Boolean}),
+    "warriorship": mapSchema(S.Boolean),
     "whitepot": S.Array(S.Union(S.Number, QuebrachineClass)),
     "wrothy": S.Array(S.Union(S.Array(S.Null), WrothyClass)),
 }) {}
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 8409029..c959eb7 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
@@ -83,13 +83,28 @@ 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,
+}) {}
+
 export class Obj6 extends S.Class<Obj6>("Obj6")({
     "dummy": S.Int,
+    "unowned": Unowned,
+    "unsafe": Unsafe,
     "unsigned": Unsigned,
+    "UseSerializers": UseSerializers,
     "ushort": Ushort,
     "using": Using,
     "Utf8JsonReader": Utf8JsonReader,
@@ -111,18 +126,6 @@ export class Obj6 extends S.Class<Obj6>("Obj6")({
     "yield": Yield,
 }) {}
 
-export class UseSerializers extends S.Class<UseSerializers>("UseSerializers")({
-    "UseSerializers": S.Int,
-}) {}
-
-export class Unsafe extends S.Class<Unsafe>("Unsafe")({
-    "unsafe": S.Int,
-}) {}
-
-export class Unowned extends S.Class<Unowned>("Unowned")({
-    "unowned": S.Int,
-}) {}
-
 export class UnmarshalJson extends S.Class<UnmarshalJson>("UnmarshalJson")({
     "UnmarshalJSON": S.Int,
 }) {}
@@ -352,6 +355,14 @@ 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,
 }) {}
@@ -379,6 +390,8 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "true": TrueClass,
     "type": TypeClass,
     "PrimitiveKind": PrimitiveKind,
+    "sealed": Sealed,
+    "SEL": Sel,
     "select": Select,
     "Self": Self,
     "Sendable": Sendable,
@@ -436,20 +449,9 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "undefined": Undefined,
     "union": Union,
     "UnmarshalJSON": UnmarshalJson,
-    "unowned": Unowned,
-    "unsafe": Unsafe,
-    "UseSerializers": UseSerializers,
 }) {}
 Object.defineProperty(Obj5.prototype, "toString", { writable: true });
 
-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,
 }) {}
@@ -698,8 +700,18 @@ export class NoSuchMethod extends S.Class<NoSuchMethod>("NoSuchMethod")({
     "noSuchMethod": S.Int,
 }) {}
 
+export class No extends S.Class<No>("No")({
+    "NO": S.Int,
+}) {}
+
+export class Nil extends S.Class<Nil>("Nil")({
+    "nil": S.Int,
+}) {}
+
 export class Obj4 extends S.Class<Obj4>("Obj4")({
     "dummy": S.Int,
+    "nil": Nil,
+    "NO": No,
     "noSuchMethod": NoSuchMethod,
     "noexcept": Noexcept,
     "nonatomic": Nonatomic,
@@ -762,16 +774,6 @@ export class Obj4 extends S.Class<Obj4>("Obj4")({
     "runtimeType": RuntimeType,
     "s": SClass,
     "sbyte": Sbyte,
-    "sealed": Sealed,
-    "SEL": Sel,
-}) {}
-
-export class No extends S.Class<No>("No")({
-    "NO": S.Int,
-}) {}
-
-export class Nil extends S.Class<Nil>("Nil")({
-    "nil": S.Int,
 }) {}
 
 export class Newtonsoft extends S.Class<Newtonsoft>("Newtonsoft")({
@@ -818,6 +820,10 @@ export class Map extends S.Class<Map>("Map")({
     "map": S.Int,
 }) {}
 
+export class MakeDictEncoder extends S.Class<MakeDictEncoder>("MakeDictEncoder")({
+    "makeDictEncoder": S.Int,
+}) {}
+
 export class Long extends S.Class<Long>("Long")({
     "long": S.Int,
 }) {}
@@ -1080,6 +1086,7 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "Locale": Locale,
     "lock": Lock,
     "long": Long,
+    "makeDictEncoder": MakeDictEncoder,
     "map": Map,
     "MapEntry": MapEntry,
     "MarshalJSON": MarshalJson,
@@ -1091,8 +1098,6 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "native": Native,
     "new": New,
     "newtonsoft": Newtonsoft,
-    "nil": Nil,
-    "NO": No,
 }) {}
 
 export class FalseClass extends S.Class<FalseClass>("FalseClass")({
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
index a1bb03c..1e8dd43 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export const LeaddatumEnum = S.Literal(
     "",
@@ -222,11 +240,11 @@ export class Pbp extends S.Class<Pbp>("Pbp")({
 }) {}
 
 export class Totallds extends S.Class<Totallds>("Totallds")({
-    "sAssists": S.Record({ key: S.String, value: Scorer}),
-    "sBlocks": S.Record({ key: S.String, value: Scorer}),
-    "sPoints": S.Record({ key: S.String, value: Scorer}),
-    "sReboundsTotal": S.Record({ key: S.String, value: Scorer}),
-    "sSteals": S.Record({ key: S.String, value: Scorer}),
+    "sAssists": mapSchema(Scorer),
+    "sBlocks": mapSchema(Scorer),
+    "sPoints": mapSchema(Scorer),
+    "sReboundsTotal": mapSchema(Scorer),
+    "sSteals": mapSchema(Scorer),
 }) {}
 
 export class Team extends S.Class<Team>("Team")({
@@ -266,9 +284,9 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "periodLengthREGULAR": S.Int,
     "periodType": PerType,
     "periodsMax": S.Int,
-    "scorers": S.Record({ key: S.String, value: S.Array(Scorer)}),
+    "scorers": mapSchema(S.Array(Scorer)),
     "timeline": S.Array(S.Any),
-    "tm": S.Record({ key: S.String, value: S.suspend(() => Tm)}),
+    "tm": mapSchema(S.suspend(() => Tm)),
     "totalTimeAdded": S.Int,
     "totallds": Totallds,
 }) {}
@@ -278,11 +296,11 @@ export class SBlocks extends S.Class<SBlocks>("SBlocks")({
 }) {}
 
 export class Lds extends S.Class<Lds>("Lds")({
-    "sAssists": S.Record({ key: S.String, value: Scorer}),
+    "sAssists": mapSchema(Scorer),
     "sBlocks": SBlocks,
-    "sPoints": S.Record({ key: S.String, value: Scorer}),
-    "sReboundsTotal": S.Record({ key: S.String, value: Scorer}),
-    "sSteals": S.Record({ key: S.String, value: Scorer}),
+    "sPoints": mapSchema(Scorer),
+    "sReboundsTotal": mapSchema(Scorer),
+    "sSteals": mapSchema(Scorer),
 }) {}
 
 export class Tm extends S.Class<Tm>("Tm")({
@@ -298,7 +316,7 @@ export class Tm extends S.Class<Tm>("Tm")({
     "p2_score": S.Int,
     "p3_score": S.Int,
     "p4_score": S.Int,
-    "pl": S.Record({ key: S.String, value: Pl}),
+    "pl": mapSchema(Pl),
     "score": S.Int,
     "scoring": S.Array(Scorer),
     "shortName": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
index bc406fd..8de9de6 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/nested-objects.json/default/TopLevel.ts
@@ -1,7 +1,25 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "a": S.Record({ key: S.String, value: S.Int}),
-    "b": S.Record({ key: S.String, value: S.Int}),
+    "a": mapSchema(S.Int),
+    "b": mapSchema(S.Int),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/number-map.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/number-map.json/default/TopLevel.ts
index d0ee431..be65416 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/number-map.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/number-map.json/default/TopLevel.ts
@@ -1,6 +1,24 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "foo": S.Record({ key: S.String, value: S.Number}),
+    "foo": mapSchema(S.Number),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
index 6f9779a..f4722a1 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class PurplePerson extends S.Class<PurplePerson>("PurplePerson")({
     "intOrString": S.Int,
@@ -22,10 +40,10 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "differentThings": S.Array(S.Union(S.Int, S.NumberFromString.pipe(S.int()), DifferentThingClass)),
     "doubleValue": S.Number,
     "intValue": S.Int,
-    "mapValue": S.Record({ key: S.String, value: S.NullOr(S.Int)}),
+    "mapValue": mapSchema(S.NullOr(S.Int)),
     "name with spaces": S.Null,
     "nullValue": S.Null,
-    "nullableMapValue": S.Record({ key: S.String, value: S.NullOr(S.Int)}),
+    "nullableMapValue": mapSchema(S.NullOr(S.Int)),
     "people": S.Array(PersonElement),
     "person": PurplePerson,
     "stringValue": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
index 247697e..70f3102 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.ts
@@ -1,5 +1,23 @@
 import * as S from "effect/Schema";
 
+const objectSchema = <A>() =>
+    S.declare(
+        (input): input is Record<string, A> =>
+            typeof input === "object" && input !== null && !Array.isArray(input)
+    );
+const mapSchema = <A, I, R>(value: S.Schema<A, I, R>) => {
+    const entries = S.transform(objectSchema<unknown>(), S.Array(S.Tuple(S.String, value)), {
+        strict: false,
+        decode: Object.entries,
+        encode: Object.fromEntries
+    });
+    return S.transform(entries, objectSchema<A>(), {
+        strict: false,
+        decode: Object.fromEntries,
+        encode: Object.entries
+    });
+};
+
 
 export class Description extends S.Class<Description>("Description")({
     "base_period": S.String,
@@ -14,6 +32,6 @@ export class Datum extends S.Class<Datum>("Datum")({
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "data": S.Record({ key: S.String, value: Datum}),
+    "data": mapSchema(Datum),
     "description": Description,
 }) {}
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 2d6b0aa..a3e6900 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
@@ -907,6 +907,11 @@ export const LongSchema = z.object({
 });
 export type Long = z.infer<typeof LongSchema>;
 
+export const MakeDictEncoderSchema = z.object({
+    "makeDictEncoder": z.number().int(),
+});
+export type MakeDictEncoder = z.infer<typeof MakeDictEncoderSchema>;
+
 export const MapSchema = z.object({
     "map": z.number().int(),
 });
@@ -1282,16 +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 KSerializerSchema = z.object({
     "KSerializer": z.number().int(),
 });
@@ -1317,6 +1312,16 @@ 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(),
 });
@@ -1612,16 +1617,16 @@ export const UnsafeSchema = z.object({
 });
 export type Unsafe = z.infer<typeof UnsafeSchema>;
 
-export const UseSerializersSchema = z.object({
-    "UseSerializers": z.number().int(),
-});
-export type UseSerializers = z.infer<typeof UseSerializersSchema>;
-
 export const UnsignedSchema = z.object({
     "unsigned": z.number().int(),
 });
 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(),
 });
@@ -1909,6 +1914,7 @@ export const Obj3Schema = z.object({
     "Locale": LocaleSchema,
     "lock": LockSchema,
     "long": LongSchema,
+    "makeDictEncoder": MakeDictEncoderSchema,
     "map": MapSchema,
     "MapEntry": MapEntrySchema,
     "MarshalJSON": MarshalJsonSchema,
@@ -1920,13 +1926,13 @@ export const Obj3Schema = z.object({
     "native": NativeSchema,
     "new": NewSchema,
     "newtonsoft": NewtonsoftSchema,
-    "nil": NilSchema,
-    "NO": NoSchema,
 });
 export type Obj3 = z.infer<typeof Obj3Schema>;
 
 export const Obj4Schema = z.object({
     "dummy": z.number().int(),
+    "nil": NilSchema,
+    "NO": NoSchema,
     "noSuchMethod": NoSuchMethodSchema,
     "noexcept": NoexceptSchema,
     "nonatomic": NonatomicSchema,
@@ -1989,8 +1995,6 @@ export const Obj4Schema = z.object({
     "runtimeType": RuntimeTypeSchema,
     "s": SSchema,
     "sbyte": SbyteSchema,
-    "sealed": SealedSchema,
-    "SEL": SelSchema,
 });
 export type Obj4 = z.infer<typeof Obj4Schema>;
 
@@ -2001,6 +2005,8 @@ export const Obj5Schema = z.object({
     "true": TrueClassSchema,
     "type": TypeClassSchema,
     "PrimitiveKind": PrimitiveKindSchema,
+    "sealed": SealedSchema,
+    "SEL": SelSchema,
     "select": SelectSchema,
     "Self": SelfSchema,
     "Sendable": SendableSchema,
@@ -2058,15 +2064,15 @@ export const Obj5Schema = z.object({
     "undefined": UndefinedSchema,
     "union": UnionSchema,
     "UnmarshalJSON": UnmarshalJsonSchema,
-    "unowned": UnownedSchema,
-    "unsafe": UnsafeSchema,
-    "UseSerializers": UseSerializersSchema,
 });
 export type Obj5 = z.infer<typeof Obj5Schema>;
 
 export const Obj6Schema = z.object({
     "dummy": z.number().int(),
+    "unowned": UnownedSchema,
+    "unsafe": UnsafeSchema,
     "unsigned": UnsignedSchema,
+    "UseSerializers": UseSerializersSchema,
     "ushort": UshortSchema,
     "using": UsingSchema,
     "Utf8JsonReader": Utf8JsonReaderSchema,
