diff --git a/base/cjson/test/inputs/json/misc/00c36.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/00c36.json/default/TopLevel.c
index 2ee753d..1ec1d29 100644
--- a/base/cjson/test/inputs/json/misc/00c36.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/00c36.json/default/TopLevel.c
@@ -60,6 +60,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fluffy_top_level = cJSON_GetFluffyTopLevelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/26c9c.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/26c9c.json/default/TopLevel.c
index a00f51c..8b65a73 100644
--- a/base/cjson/test/inputs/json/misc/26c9c.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/26c9c.json/default/TopLevel.c
@@ -20,6 +20,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/29f47.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/29f47.json/default/TopLevel.c
index a156f09..16239a7 100644
--- a/base/cjson/test/inputs/json/misc/29f47.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/29f47.json/default/TopLevel.c
@@ -149,6 +149,7 @@ struct Edited * cJSON_GetEditedValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/2df80.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/2df80.json/default/TopLevel.c
index f8a4bff..9890123 100644
--- a/base/cjson/test/inputs/json/misc/2df80.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/2df80.json/default/TopLevel.c
@@ -140,6 +140,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fluffy_top_level = cJSON_GetFluffyTopLevelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/33d2e.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/33d2e.json/default/TopLevel.c
index 41c0e87..4680f29 100644
--- a/base/cjson/test/inputs/json/misc/33d2e.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/33d2e.json/default/TopLevel.c
@@ -70,6 +70,7 @@ struct AffiliationElement * cJSON_GetAffiliationElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.affiliation_class = cJSON_GetAffiliationClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/421d4.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/421d4.json/default/TopLevel.c
index d7ae5bc..3633306 100644
--- a/base/cjson/test/inputs/json/misc/421d4.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/421d4.json/default/TopLevel.c
@@ -20,6 +20,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/5f7fe.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/5f7fe.json/default/TopLevel.c
index 4d4df15..922d393 100644
--- a/base/cjson/test/inputs/json/misc/5f7fe.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/5f7fe.json/default/TopLevel.c
@@ -40,6 +40,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/617e8.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/617e8.json/default/TopLevel.c
index c6f3c0e..bc1af1c 100644
--- a/base/cjson/test/inputs/json/misc/617e8.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/617e8.json/default/TopLevel.c
@@ -40,6 +40,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/7fbfb.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/7fbfb.json/default/TopLevel.c
index c1b8f8f..b69ab99 100644
--- a/base/cjson/test/inputs/json/misc/7fbfb.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/7fbfb.json/default/TopLevel.c
@@ -60,6 +60,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fluffy_top_level = cJSON_GetFluffyTopLevelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/a0496.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/a0496.json/default/TopLevel.c
index 62bf604..a91da5d 100644
--- a/base/cjson/test/inputs/json/misc/a0496.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/a0496.json/default/TopLevel.c
@@ -20,6 +20,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/a3d8c.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/a3d8c.json/default/TopLevel.c
index b9987a2..18c6dff 100644
--- a/base/cjson/test/inputs/json/misc/a3d8c.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/a3d8c.json/default/TopLevel.c
@@ -40,6 +40,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/c8c7e.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/c8c7e.json/default/TopLevel.c
index 5718070..aa6837c 100644
--- a/base/cjson/test/inputs/json/misc/c8c7e.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/c8c7e.json/default/TopLevel.c
@@ -60,6 +60,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fluffy_top_level = cJSON_GetFluffyTopLevelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/cda6c.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/cda6c.json/default/TopLevel.c
index 1f9b442..e3de9b4 100644
--- a/base/cjson/test/inputs/json/misc/cda6c.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/cda6c.json/default/TopLevel.c
@@ -60,6 +60,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fluffy_top_level = cJSON_GetFluffyTopLevelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/e53b5.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/e53b5.json/default/TopLevel.c
index 288c45b..58eebf9 100644
--- a/base/cjson/test/inputs/json/misc/e53b5.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/e53b5.json/default/TopLevel.c
@@ -60,6 +60,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fluffy_top_level = cJSON_GetFluffyTopLevelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/f74d5.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/f74d5.json/default/TopLevel.c
index a664020..69cfaa5 100644
--- a/base/cjson/test/inputs/json/misc/f74d5.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/f74d5.json/default/TopLevel.c
@@ -37,6 +37,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/misc/fcca3.json/default/TopLevel.c b/head/cjson/test/inputs/json/misc/fcca3.json/default/TopLevel.c
index df44909..779b5c5 100644
--- a/base/cjson/test/inputs/json/misc/fcca3.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/misc/fcca3.json/default/TopLevel.c
@@ -40,6 +40,7 @@ struct Datum * cJSON_GetDatumValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/bug863.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/bug863.json/default/TopLevel.c
index 69917f3..c45b177 100644
--- a/base/cjson/test/inputs/json/priority/bug863.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/bug863.json/default/TopLevel.c
@@ -144,6 +144,7 @@ struct TopLevelUnion * cJSON_GetTopLevelUnionValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/combinations4.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/combinations4.json/default/TopLevel.c
index 27c944e..00e813f 100644
--- a/base/cjson/test/inputs/json/priority/combinations4.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/combinations4.json/default/TopLevel.c
@@ -33,6 +33,7 @@ struct Protrusive * cJSON_GetProtrusiveValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -110,6 +111,7 @@ struct PulpitismElement * cJSON_GetPulpitismElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -171,6 +173,7 @@ struct PyodermiaElement * cJSON_GetPyodermiaElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -214,6 +217,7 @@ struct QuebrachineElement * cJSON_GetQuebrachineElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.quebrachine_class = cJSON_GetQuebrachineClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -268,6 +272,7 @@ struct Querier * cJSON_GetQuerierValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -348,6 +353,7 @@ struct Rebarbative * cJSON_GetRebarbativeValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -424,6 +430,7 @@ struct Retrocervical * cJSON_GetRetrocervicalValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -486,6 +493,7 @@ struct Revert * cJSON_GetRevertValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -537,6 +545,7 @@ struct RewriteElement * cJSON_GetRewriteElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -611,6 +620,7 @@ struct Saccoderm * cJSON_GetSaccodermValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -670,6 +680,7 @@ struct SantirElement * cJSON_GetSantirElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -724,6 +735,7 @@ struct Saprophilous * cJSON_GetSaprophilousValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -793,6 +805,7 @@ struct SaxtenElement * cJSON_GetSaxtenElementValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -855,6 +868,7 @@ struct Scoffer * cJSON_GetScofferValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -952,6 +966,7 @@ struct Scrampum * cJSON_GetScrampumValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1021,6 +1036,7 @@ struct Serpentinic * cJSON_GetSerpentinicValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1092,6 +1108,7 @@ struct Shadowable * cJSON_GetShadowableValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1165,6 +1182,7 @@ struct SisteringElement * cJSON_GetSisteringElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1241,6 +1259,7 @@ struct Stagmometer * cJSON_GetStagmometerValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1319,6 +1338,7 @@ struct Stimulability * cJSON_GetStimulabilityValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1396,6 +1416,7 @@ struct Strangleable * cJSON_GetStrangleableValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1457,6 +1478,7 @@ struct StrenuosityElement * cJSON_GetStrenuosityElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.strenuosity_class = cJSON_GetStrenuosityClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1512,6 +1534,7 @@ struct Tabaxir * cJSON_GetTabaxirValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1554,6 +1577,7 @@ struct Talpiform * cJSON_GetTalpiformValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1601,6 +1625,7 @@ struct Thwack * cJSON_GetThwackValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1662,6 +1687,7 @@ struct Tortricine * cJSON_GetTortricineValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.quebrachine_class = cJSON_GetQuebrachineClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1725,6 +1751,7 @@ struct TruantcyElement * cJSON_GetTruantcyElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.truantcy_class = cJSON_GetTruantcyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1787,6 +1814,7 @@ struct Unbeginning * cJSON_GetUnbeginningValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1899,6 +1927,7 @@ struct Undesirability * cJSON_GetUndesirabilityValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2008,6 +2037,7 @@ struct Unerasing * cJSON_GetUnerasingValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2103,6 +2133,7 @@ struct Unguentarium * cJSON_GetUnguentariumValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2160,6 +2191,7 @@ struct UnimpeachablyElement * cJSON_GetUnimpeachablyElementValue(const cJSON * j
             x->type = cJSON_Object;
             x->value.unimpeachably_class = cJSON_GetUnimpeachablyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2214,6 +2246,7 @@ struct Unmortgaged * cJSON_GetUnmortgagedValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2285,6 +2318,7 @@ struct Unobstructed * cJSON_GetUnobstructedValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2339,6 +2373,7 @@ struct Unreceptivity * cJSON_GetUnreceptivityValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2414,6 +2449,7 @@ struct Unsatisfactoriness * cJSON_GetUnsatisfactorinessValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2478,6 +2514,7 @@ struct UnstressedElement * cJSON_GetUnstressedElementValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2546,6 +2583,7 @@ struct Untasked * cJSON_GetUntaskedValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2646,6 +2684,7 @@ struct Unvarying * cJSON_GetUnvaryingValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2726,6 +2765,7 @@ struct Vehemently * cJSON_GetVehementlyValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2783,6 +2823,7 @@ struct Whitepot * cJSON_GetWhitepotValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2830,6 +2871,7 @@ struct WrothyElement * cJSON_GetWrothyElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.wrothy_class = cJSON_GetWrothyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/combinations4.json/header-only-false__source-style-single-source--491b617045b9/TopLevel.c b/head/cjson/test/inputs/json/priority/combinations4.json/header-only-false__source-style-single-source--491b617045b9/TopLevel.c
index 27c944e..00e813f 100644
--- a/base/cjson/test/inputs/json/priority/combinations4.json/header-only-false__source-style-single-source--491b617045b9/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/combinations4.json/header-only-false__source-style-single-source--491b617045b9/TopLevel.c
@@ -33,6 +33,7 @@ struct Protrusive * cJSON_GetProtrusiveValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -110,6 +111,7 @@ struct PulpitismElement * cJSON_GetPulpitismElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -171,6 +173,7 @@ struct PyodermiaElement * cJSON_GetPyodermiaElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -214,6 +217,7 @@ struct QuebrachineElement * cJSON_GetQuebrachineElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.quebrachine_class = cJSON_GetQuebrachineClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -268,6 +272,7 @@ struct Querier * cJSON_GetQuerierValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -348,6 +353,7 @@ struct Rebarbative * cJSON_GetRebarbativeValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -424,6 +430,7 @@ struct Retrocervical * cJSON_GetRetrocervicalValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -486,6 +493,7 @@ struct Revert * cJSON_GetRevertValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -537,6 +545,7 @@ struct RewriteElement * cJSON_GetRewriteElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -611,6 +620,7 @@ struct Saccoderm * cJSON_GetSaccodermValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -670,6 +680,7 @@ struct SantirElement * cJSON_GetSantirElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -724,6 +735,7 @@ struct Saprophilous * cJSON_GetSaprophilousValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -793,6 +805,7 @@ struct SaxtenElement * cJSON_GetSaxtenElementValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -855,6 +868,7 @@ struct Scoffer * cJSON_GetScofferValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -952,6 +966,7 @@ struct Scrampum * cJSON_GetScrampumValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1021,6 +1036,7 @@ struct Serpentinic * cJSON_GetSerpentinicValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1092,6 +1108,7 @@ struct Shadowable * cJSON_GetShadowableValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1165,6 +1182,7 @@ struct SisteringElement * cJSON_GetSisteringElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1241,6 +1259,7 @@ struct Stagmometer * cJSON_GetStagmometerValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1319,6 +1338,7 @@ struct Stimulability * cJSON_GetStimulabilityValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1396,6 +1416,7 @@ struct Strangleable * cJSON_GetStrangleableValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1457,6 +1478,7 @@ struct StrenuosityElement * cJSON_GetStrenuosityElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.strenuosity_class = cJSON_GetStrenuosityClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1512,6 +1534,7 @@ struct Tabaxir * cJSON_GetTabaxirValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1554,6 +1577,7 @@ struct Talpiform * cJSON_GetTalpiformValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1601,6 +1625,7 @@ struct Thwack * cJSON_GetThwackValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1662,6 +1687,7 @@ struct Tortricine * cJSON_GetTortricineValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.quebrachine_class = cJSON_GetQuebrachineClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1725,6 +1751,7 @@ struct TruantcyElement * cJSON_GetTruantcyElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.truantcy_class = cJSON_GetTruantcyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1787,6 +1814,7 @@ struct Unbeginning * cJSON_GetUnbeginningValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1899,6 +1927,7 @@ struct Undesirability * cJSON_GetUndesirabilityValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2008,6 +2037,7 @@ struct Unerasing * cJSON_GetUnerasingValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2103,6 +2133,7 @@ struct Unguentarium * cJSON_GetUnguentariumValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2160,6 +2191,7 @@ struct UnimpeachablyElement * cJSON_GetUnimpeachablyElementValue(const cJSON * j
             x->type = cJSON_Object;
             x->value.unimpeachably_class = cJSON_GetUnimpeachablyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2214,6 +2246,7 @@ struct Unmortgaged * cJSON_GetUnmortgagedValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2285,6 +2318,7 @@ struct Unobstructed * cJSON_GetUnobstructedValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2339,6 +2373,7 @@ struct Unreceptivity * cJSON_GetUnreceptivityValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2414,6 +2449,7 @@ struct Unsatisfactoriness * cJSON_GetUnsatisfactorinessValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2478,6 +2514,7 @@ struct UnstressedElement * cJSON_GetUnstressedElementValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2546,6 +2583,7 @@ struct Untasked * cJSON_GetUntaskedValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2646,6 +2684,7 @@ struct Unvarying * cJSON_GetUnvaryingValue(const cJSON * j) {
                 x->value.integer_map = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2726,6 +2765,7 @@ struct Vehemently * cJSON_GetVehementlyValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2783,6 +2823,7 @@ struct Whitepot * cJSON_GetWhitepotValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2830,6 +2871,7 @@ struct WrothyElement * cJSON_GetWrothyElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.wrothy_class = cJSON_GetWrothyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/nbl-stats.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/nbl-stats.json/default/TopLevel.c
index dfa84d4..4da3766 100644
--- a/base/cjson/test/inputs/json/priority/nbl-stats.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/nbl-stats.json/default/TopLevel.c
@@ -225,6 +225,7 @@ struct LeaddatumElement * cJSON_GetLeaddatumElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -264,6 +265,7 @@ struct SMinutes * cJSON_GetSMinutesValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/optional-union.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/optional-union.json/default/TopLevel.c
index 73a540b..441f7b1 100644
--- a/base/cjson/test/inputs/json/priority/optional-union.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/optional-union.json/default/TopLevel.c
@@ -17,6 +17,7 @@ struct A * cJSON_GetAValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.c
index fa68a45..8e968fd 100644
--- a/base/cjson/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/php-mixed-union.json/default/TopLevel.c
@@ -28,6 +28,7 @@ struct MixedElement * cJSON_GetMixedElementValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.c
index 216ed08..a26705a 100644
--- a/base/cjson/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.c
@@ -17,6 +17,7 @@ struct Union * cJSON_GetUnionValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/priority/unions.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/unions.json/default/TopLevel.c
index 9ca4bcc..4670b54 100644
--- a/base/cjson/test/inputs/json/priority/unions.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/unions.json/default/TopLevel.c
@@ -20,6 +20,7 @@ struct X * cJSON_GetXValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -78,6 +79,7 @@ struct ZElement * cJSON_GetZElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.c b/head/cjson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.c
index 23aa109..a80a131 100644
--- a/base/cjson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.c
@@ -21,6 +21,7 @@ struct DifferentThingElement * cJSON_GetDifferentThingElementValue(const cJSON *
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -67,6 +68,7 @@ struct IntOrString * cJSON_GetIntOrStringValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson-default/test/inputs/json/priority/nbl-stats.json/default/TopLevel.h b/head/cjson-default/test/inputs/json/priority/nbl-stats.json/default/TopLevel.h
index a9eeef2..3f44aba 100644
--- a/base/cjson-default/test/inputs/json/priority/nbl-stats.json/default/TopLevel.h
+++ b/head/cjson-default/test/inputs/json/priority/nbl-stats.json/default/TopLevel.h
@@ -719,6 +719,7 @@ struct LeaddatumElement * cJSON_GetLeaddatumElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -758,6 +759,7 @@ struct SMinutes * cJSON_GetSMinutesValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.h b/head/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.h
index 271cdd3..b56483c 100644
--- a/base/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.h
+++ b/head/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.h
@@ -62,6 +62,7 @@ struct LeaddatumElement * cJSON_GetLeaddatumElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/SMinutes.h b/head/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/SMinutes.h
index 60351b9..79fa453 100644
--- a/base/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/SMinutes.h
+++ b/head/cjson-multi-header/test/inputs/json/priority/nbl-stats.json/default/SMinutes.h
@@ -60,6 +60,7 @@ struct SMinutes * cJSON_GetSMinutesValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.c b/head/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.c
index f7959e3..d112c63 100644
--- a/base/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.c
+++ b/head/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/LeaddatumElement.c
@@ -17,6 +17,7 @@ struct LeaddatumElement * cJSON_GetLeaddatumElementValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.integer = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/SMinutes.c b/head/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/SMinutes.c
index eb00f73..75f1fc4 100644
--- a/base/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/SMinutes.c
+++ b/head/cjson-multi-split/test/inputs/json/priority/nbl-stats.json/default/SMinutes.c
@@ -17,6 +17,7 @@ struct SMinutes * cJSON_GetSMinutesValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts b/head/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
index ec5015b..b901f1b 100644
--- a/base/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
@@ -5,9 +5,7 @@ import * as z from "zod";
 // /*
 // This text must remain inside the generated enum documentation comment.
 
-export const KindSchema = z.enum([
-    "ok",
-]);
+export const KindSchema = z.literal("ok");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts b/head/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
index 6599d9d..6df4655 100644
--- a/base/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
+++ b/head/comment-injection-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
@@ -8,9 +8,7 @@ import * as z from "zod";
 // }
 // }
 
-export const KindSchema = z.enum([
-    "ok",
-]);
+export const KindSchema = z.literal("ok");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Converter.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Converter.java
new file mode 100644
index 0000000..d243dc1
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Converter.java
@@ -0,0 +1,103 @@
+// To use this code, add the following Maven dependency to your project:
+//
+//
+//     com.fasterxml.jackson.core     : jackson-databind          : 2.9.0
+//     com.fasterxml.jackson.datatype : jackson-datatype-jsr310   : 2.9.0
+//
+// Import this package:
+//
+//     import io.quicktype.Converter;
+//
+// Then you can deserialize a JSON string with
+//
+//     TopLevel data = Converter.fromJsonString(jsonString);
+
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.*;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.temporal.ChronoField;
+
+public class Converter {
+    // Date-time helpers
+
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_INSTANT)
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetDateTime parseDateTimeString(String str) {
+        return ZonedDateTime.from(Converter.DATE_TIME_FORMATTER.parse(str)).toOffsetDateTime();
+    }
+
+    private static final DateTimeFormatter TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_TIME)
+            .parseDefaulting(ChronoField.YEAR, 2020)
+            .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
+            .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetTime parseTimeString(String str) {
+        return ZonedDateTime.from(Converter.TIME_FORMATTER.parse(str)).toOffsetDateTime().toOffsetTime();
+    }
+    // Serialize/deserialize helpers
+
+    public static TopLevel fromJsonString(String json) throws IOException {
+        return getObjectReader().readValue(json);
+    }
+
+    public static String toJsonString(TopLevel obj) throws JsonProcessingException {
+        return getObjectWriter().writeValueAsString(obj);
+    }
+
+    private static ObjectReader reader;
+    private static ObjectWriter writer;
+
+    private static void instantiateMapper() {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.findAndRegisterModules();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(DeserializationFeature.ACCEPT_FLOAT_AS_INT, false);
+        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(OffsetDateTime.class, new JsonDeserializer<OffsetDateTime>() {
+            @Override
+            public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseDateTimeString(value);
+            }
+        });
+        mapper.registerModule(module);
+        reader = mapper.readerFor(TopLevel.class);
+        writer = mapper.writerFor(TopLevel.class);
+    }
+
+    private static ObjectReader getObjectReader() {
+        if (reader == null) instantiateMapper();
+        return reader;
+    }
+
+    private static ObjectWriter getObjectWriter() {
+        if (writer == null) instantiateMapper();
+        return writer;
+    }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Empty.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Empty.java
new file mode 100644
index 0000000..2065ee6
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Empty.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class Empty {
+    private long x;
+
+    @JsonProperty("x")
+    public long getX() { return x; }
+    @JsonProperty("x")
+    public void setX(long value) { this.x = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/EmptyClass.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/EmptyClass.java
new file mode 100644
index 0000000..69069c0
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/EmptyClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class EmptyClass {
+    private long y;
+
+    @JsonProperty("y")
+    public long getY() { return y; }
+    @JsonProperty("y")
+    public void setY(long value) { this.y = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Foo.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Foo.java
new file mode 100644
index 0000000..2d9f38e
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/Foo.java
@@ -0,0 +1,24 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class Foo {
+    private FooBla bla;
+    private long empty;
+    private long foo;
+
+    @JsonProperty("bla")
+    public FooBla getBla() { return bla; }
+    @JsonProperty("bla")
+    public void setBla(FooBla value) { this.bla = value; }
+
+    @JsonProperty("_")
+    public long getEmpty() { return empty; }
+    @JsonProperty("_")
+    public void setEmpty(long value) { this.empty = value; }
+
+    @JsonProperty("__")
+    public long getFoo() { return foo; }
+    @JsonProperty("__")
+    public void setFoo(long value) { this.foo = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/FooBla.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/FooBla.java
new file mode 100644
index 0000000..39d3685
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/FooBla.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class FooBla {
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/ThisIsAToughOne.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/ThisIsAToughOne.java
new file mode 100644
index 0000000..68ceb3c
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/ThisIsAToughOne.java
@@ -0,0 +1,18 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ThisIsAToughOne {
+    private long empty;
+    private long thisIsAToughOne;
+
+    @JsonProperty("\n\n\n")
+    public long getEmpty() { return empty; }
+    @JsonProperty("\n\n\n")
+    public void setEmpty(long value) { this.empty = value; }
+
+    @JsonProperty("\"")
+    public long getThisIsAToughOne() { return thisIsAToughOne; }
+    @JsonProperty("\"")
+    public void setThisIsAToughOne(long value) { this.thisIsAToughOne = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/TopLevel.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/TopLevel.java
new file mode 100644
index 0000000..c1acca4
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/TopLevel.java
@@ -0,0 +1,42 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TopLevel {
+    private TopLevelBla bla;
+    private Empty empty;
+    private Foo foo;
+    private ThisIsAToughOne thisIsAToughOne;
+    private long topLevel;
+    private EmptyClass topLevelEmpty;
+
+    @JsonProperty("bla")
+    public TopLevelBla getBla() { return bla; }
+    @JsonProperty("bla")
+    public void setBla(TopLevelBla value) { this.bla = value; }
+
+    @JsonAnyGetter
+    public java.util.Map<String, Object> getEmpty() { return java.util.Collections.<String, Object>singletonMap("", empty); }
+    @JsonAnySetter
+    public void setEmpty(String key, Empty value) { if (key.isEmpty()) this.empty = value; }
+
+    @JsonProperty("foo")
+    public Foo getFoo() { return foo; }
+    @JsonProperty("foo")
+    public void setFoo(Foo value) { this.foo = value; }
+
+    @JsonProperty("ThisIsA\ud83d\ude1cTough\"\n\nOne")
+    public ThisIsAToughOne getThisIsAToughOne() { return thisIsAToughOne; }
+    @JsonProperty("ThisIsA\ud83d\ude1cTough\"\n\nOne")
+    public void setThisIsAToughOne(ThisIsAToughOne value) { this.thisIsAToughOne = value; }
+
+    @JsonProperty("!")
+    public long getTopLevel() { return topLevel; }
+    @JsonProperty("!")
+    public void setTopLevel(long value) { this.topLevel = value; }
+
+    @JsonProperty("Empty")
+    public EmptyClass getTopLevelEmpty() { return topLevelEmpty; }
+    @JsonProperty("Empty")
+    public void setTopLevelEmpty(EmptyClass value) { this.topLevelEmpty = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/TopLevelBla.java b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/TopLevelBla.java
new file mode 100644
index 0000000..395a4d1
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/identifiers.json/default/src/main/java/io/quicktype/TopLevelBla.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TopLevelBla {
+    private long bar;
+
+    @JsonProperty("bar")
+    public long getBar() { return bar; }
+    @JsonProperty("bar")
+    public void setBar(long value) { this.bar = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/Converter.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/Converter.java
new file mode 100644
index 0000000..d243dc1
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/Converter.java
@@ -0,0 +1,103 @@
+// To use this code, add the following Maven dependency to your project:
+//
+//
+//     com.fasterxml.jackson.core     : jackson-databind          : 2.9.0
+//     com.fasterxml.jackson.datatype : jackson-datatype-jsr310   : 2.9.0
+//
+// Import this package:
+//
+//     import io.quicktype.Converter;
+//
+// Then you can deserialize a JSON string with
+//
+//     TopLevel data = Converter.fromJsonString(jsonString);
+
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.*;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.temporal.ChronoField;
+
+public class Converter {
+    // Date-time helpers
+
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_INSTANT)
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetDateTime parseDateTimeString(String str) {
+        return ZonedDateTime.from(Converter.DATE_TIME_FORMATTER.parse(str)).toOffsetDateTime();
+    }
+
+    private static final DateTimeFormatter TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_TIME)
+            .parseDefaulting(ChronoField.YEAR, 2020)
+            .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
+            .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetTime parseTimeString(String str) {
+        return ZonedDateTime.from(Converter.TIME_FORMATTER.parse(str)).toOffsetDateTime().toOffsetTime();
+    }
+    // Serialize/deserialize helpers
+
+    public static TopLevel fromJsonString(String json) throws IOException {
+        return getObjectReader().readValue(json);
+    }
+
+    public static String toJsonString(TopLevel obj) throws JsonProcessingException {
+        return getObjectWriter().writeValueAsString(obj);
+    }
+
+    private static ObjectReader reader;
+    private static ObjectWriter writer;
+
+    private static void instantiateMapper() {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.findAndRegisterModules();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(DeserializationFeature.ACCEPT_FLOAT_AS_INT, false);
+        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(OffsetDateTime.class, new JsonDeserializer<OffsetDateTime>() {
+            @Override
+            public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseDateTimeString(value);
+            }
+        });
+        mapper.registerModule(module);
+        reader = mapper.readerFor(TopLevel.class);
+        writer = mapper.writerFor(TopLevel.class);
+    }
+
+    private static ObjectReader getObjectReader() {
+        if (reader == null) instantiateMapper();
+        return reader;
+    }
+
+    private static ObjectWriter getObjectWriter() {
+        if (writer == null) instantiateMapper();
+        return writer;
+    }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/JSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/JSON.java
new file mode 100644
index 0000000..bb2fa01
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/JSON.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class JSON {
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/TopLevel.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/TopLevel.java
new file mode 100644
index 0000000..24e7ef9
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/TopLevel.java
@@ -0,0 +1,565 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+import java.util.List;
+
+public class TopLevel {
+    private List<Double> topLevelYNumber0E1JSON;
+    private List<List<Object>> yArrayArraysWithSpacesJSON;
+    private List<Object> yArrayEmptyJSON;
+    private List<String> yArrayEmptyStringJSON;
+    private List<String> yArrayEndingWithNewlineJSON;
+    private List<Boolean> yArrayFalseJSON;
+    private List<YArrayHeterogeneousJSON> yArrayHeterogeneousJSON;
+    private List<Object> yArrayNullJSON;
+    private List<Long> yArrayWith1_AndNewlineJSON;
+    private List<Long> yArrayWithLeadingSpaceJSON;
+    private List<Long> yArrayWithSeveralNullJSON;
+    private List<Long> yArrayWithTrailingSpaceJSON;
+    private List<Double> yNumber0E1JSON;
+    private List<Long> yNumberAfterSpaceJSON;
+    private List<Double> yNumberDoubleCloseToZeroJSON;
+    private List<Double> yNumberIntWithExpJSON;
+    private List<Double> yNumberJSON;
+    private List<Long> yNumberMinusZeroJSON;
+    private List<Long> yNumberNegativeIntJSON;
+    private List<Long> yNumberNegativeOneJSON;
+    private List<Long> yNumberNegativeZeroJSON;
+    private List<Double> yNumberRealCapitalEJSON;
+    private List<Double> yNumberRealCapitalENegExpJSON;
+    private List<Double> yNumberRealCapitalEPosExpJSON;
+    private List<Double> yNumberRealExponentJSON;
+    private List<Double> yNumberRealFractionExponentJSON;
+    private List<Double> yNumberRealNegExpJSON;
+    private List<Double> yNumberRealPosExponentJSON;
+    private List<Long> yNumberSimpleIntJSON;
+    private List<Double> yNumberSimpleRealJSON;
+    private YObjectBasicJSON yObjectBasicJSON;
+    private JSON yObjectEmptyJSON;
+    private YObjectEmptyKeyJSON yObjectEmptyKeyJSON;
+    private YObjectEscapedNullInKeyJSON yObjectEscapedNullInKeyJSON;
+    private YObjectExtremeNumbersJSON yObjectExtremeNumbersJSON;
+    private YObjectJSON yObjectJSON;
+    private YObjectLongStringsJSON yObjectLongStringsJSON;
+    private YObjectSimpleJSON yObjectSimpleJSON;
+    private YObjectStringUnicodeJSON yObjectStringUnicodeJSON;
+    private YObjectWithNewlinesJSON yObjectWithNewlinesJSON;
+    private List<String> yString1_2_3_BytesUTF8_SequencesJSON;
+    private List<String> yStringAcceptedSurrogatePairJSON;
+    private List<String> yStringAcceptedSurrogatePairsJSON;
+    private List<String> yStringAllowedEscapesJSON;
+    private List<String> yStringBackslashAndUEscapedZeroJSON;
+    private List<String> yStringBackslashDoublequotesJSON;
+    private List<String> yStringCommentsJSON;
+    private List<String> yStringDoubleEscapeAJSON;
+    private List<String> yStringDoubleEscapeNJSON;
+    private List<String> yStringEscapedControlCharacterJSON;
+    private List<String> yStringEscapedNoncharacterJSON;
+    private List<String> yStringInArrayJSON;
+    private List<String> yStringInArrayWithLeadingSpaceJSON;
+    private List<String> yStringLastSurrogates1_And2JSON;
+    private List<String> yStringNbspUescapedJSON;
+    private List<String> yStringNonCharacterInUTF8_U10FFFFJSON;
+    private List<String> yStringNonCharacterInUTF8_U1FFFFJSON;
+    private List<String> yStringNonCharacterInUTF8_UFFFFJSON;
+    private List<String> yStringNullEscapeJSON;
+    private List<String> yStringOneByteUTF8JSON;
+    private List<String> yStringPiJSON;
+    private List<String> yStringSimpleASCIIJSON;
+    private String yStringSpaceJSON;
+    private List<String> yStringSurrogatesU1D11EMUSICALSYMBOLGCLEFJSON;
+    private List<String> yStringThreeByteUTF8JSON;
+    private List<String> yStringTwoByteUTF8JSON;
+    private List<String> yStringU2028_LineSepJSON;
+    private List<String> yStringU2029_ParSepJSON;
+    private List<String> yStringUEscapeJSON;
+    private List<String> yStringUescapedNewlineJSON;
+    private List<String> yStringUnescapedCharDeleteJSON;
+    private List<String> yStringUnicode2JSON;
+    private List<String> yStringUnicodeEscapedBackslashJSON;
+    private List<String> yStringUnicodeEscapedDoubleQuoteJSON;
+    private List<String> yStringUnicodeJSON;
+    private List<String> yStringUnicodeU10FFFENoncharJSON;
+    private List<String> yStringUnicodeU1FFFENoncharJSON;
+    private List<String> yStringUnicodeU200BZEROWIDTHSPACEJSON;
+    private List<String> yStringUnicodeU2064_InvisiblePlusJSON;
+    private List<String> yStringUnicodeUFDD0NoncharJSON;
+    private List<String> yStringUnicodeUFFFENoncharJSON;
+    private List<String> yStringUtf8JSON;
+    private List<String> yStringWithDelCharacterJSON;
+    private boolean yStructureLonelyFalseJSON;
+    private long yStructureLonelyIntJSON;
+    private double yStructureLonelyNegativeRealJSON;
+    private Object yStructureLonelyNullJSON;
+    private String yStructureLonelyStringJSON;
+    private boolean yStructureLonelyTrueJSON;
+    private String yStructureStringEmptyJSON;
+    private List<String> yStructureTrailingNewlineJSON;
+    private List<Boolean> yStructureTrueInArrayJSON;
+    private List<Object> yStructureWhitespaceArrayJSON;
+
+    @JsonProperty("y_number_0e1.json")
+    public List<Double> getTopLevelYNumber0E1JSON() { return topLevelYNumber0E1JSON; }
+    @JsonProperty("y_number_0e1.json")
+    public void setTopLevelYNumber0E1JSON(List<Double> value) { this.topLevelYNumber0E1JSON = value; }
+
+    @JsonProperty("y_array_arraysWithSpaces.json")
+    public List<List<Object>> getYArrayArraysWithSpacesJSON() { return yArrayArraysWithSpacesJSON; }
+    @JsonProperty("y_array_arraysWithSpaces.json")
+    public void setYArrayArraysWithSpacesJSON(List<List<Object>> value) { this.yArrayArraysWithSpacesJSON = value; }
+
+    @JsonProperty("y_array_empty.json")
+    public List<Object> getYArrayEmptyJSON() { return yArrayEmptyJSON; }
+    @JsonProperty("y_array_empty.json")
+    public void setYArrayEmptyJSON(List<Object> value) { this.yArrayEmptyJSON = value; }
+
+    @JsonProperty("y_array_empty-string.json")
+    public List<String> getYArrayEmptyStringJSON() { return yArrayEmptyStringJSON; }
+    @JsonProperty("y_array_empty-string.json")
+    public void setYArrayEmptyStringJSON(List<String> value) { this.yArrayEmptyStringJSON = value; }
+
+    @JsonProperty("y_array_ending_with_newline.json")
+    public List<String> getYArrayEndingWithNewlineJSON() { return yArrayEndingWithNewlineJSON; }
+    @JsonProperty("y_array_ending_with_newline.json")
+    public void setYArrayEndingWithNewlineJSON(List<String> value) { this.yArrayEndingWithNewlineJSON = value; }
+
+    @JsonProperty("y_array_false.json")
+    public List<Boolean> getYArrayFalseJSON() { return yArrayFalseJSON; }
+    @JsonProperty("y_array_false.json")
+    public void setYArrayFalseJSON(List<Boolean> value) { this.yArrayFalseJSON = value; }
+
+    @JsonProperty("y_array_heterogeneous.json")
+    public List<YArrayHeterogeneousJSON> getYArrayHeterogeneousJSON() { return yArrayHeterogeneousJSON; }
+    @JsonProperty("y_array_heterogeneous.json")
+    public void setYArrayHeterogeneousJSON(List<YArrayHeterogeneousJSON> value) { this.yArrayHeterogeneousJSON = value; }
+
+    @JsonProperty("y_array_null.json")
+    public List<Object> getYArrayNullJSON() { return yArrayNullJSON; }
+    @JsonProperty("y_array_null.json")
+    public void setYArrayNullJSON(List<Object> value) { this.yArrayNullJSON = value; }
+
+    @JsonProperty("y_array_with_1_and_newline.json")
+    public List<Long> getYArrayWith1AndNewlineJSON() { return yArrayWith1_AndNewlineJSON; }
+    @JsonProperty("y_array_with_1_and_newline.json")
+    public void setYArrayWith1AndNewlineJSON(List<Long> value) { this.yArrayWith1_AndNewlineJSON = value; }
+
+    @JsonProperty("y_array_with_leading_space.json")
+    public List<Long> getYArrayWithLeadingSpaceJSON() { return yArrayWithLeadingSpaceJSON; }
+    @JsonProperty("y_array_with_leading_space.json")
+    public void setYArrayWithLeadingSpaceJSON(List<Long> value) { this.yArrayWithLeadingSpaceJSON = value; }
+
+    @JsonProperty("y_array_with_several_null.json")
+    public List<Long> getYArrayWithSeveralNullJSON() { return yArrayWithSeveralNullJSON; }
+    @JsonProperty("y_array_with_several_null.json")
+    public void setYArrayWithSeveralNullJSON(List<Long> value) { this.yArrayWithSeveralNullJSON = value; }
+
+    @JsonProperty("y_array_with_trailing_space.json")
+    public List<Long> getYArrayWithTrailingSpaceJSON() { return yArrayWithTrailingSpaceJSON; }
+    @JsonProperty("y_array_with_trailing_space.json")
+    public void setYArrayWithTrailingSpaceJSON(List<Long> value) { this.yArrayWithTrailingSpaceJSON = value; }
+
+    @JsonProperty("y_number_0e+1.json")
+    public List<Double> getYNumber0E1JSON() { return yNumber0E1JSON; }
+    @JsonProperty("y_number_0e+1.json")
+    public void setYNumber0E1JSON(List<Double> value) { this.yNumber0E1JSON = value; }
+
+    @JsonProperty("y_number_after_space.json")
+    public List<Long> getYNumberAfterSpaceJSON() { return yNumberAfterSpaceJSON; }
+    @JsonProperty("y_number_after_space.json")
+    public void setYNumberAfterSpaceJSON(List<Long> value) { this.yNumberAfterSpaceJSON = value; }
+
+    @JsonProperty("y_number_double_close_to_zero.json")
+    public List<Double> getYNumberDoubleCloseToZeroJSON() { return yNumberDoubleCloseToZeroJSON; }
+    @JsonProperty("y_number_double_close_to_zero.json")
+    public void setYNumberDoubleCloseToZeroJSON(List<Double> value) { this.yNumberDoubleCloseToZeroJSON = value; }
+
+    @JsonProperty("y_number_int_with_exp.json")
+    public List<Double> getYNumberIntWithExpJSON() { return yNumberIntWithExpJSON; }
+    @JsonProperty("y_number_int_with_exp.json")
+    public void setYNumberIntWithExpJSON(List<Double> value) { this.yNumberIntWithExpJSON = value; }
+
+    @JsonProperty("y_number.json")
+    public List<Double> getYNumberJSON() { return yNumberJSON; }
+    @JsonProperty("y_number.json")
+    public void setYNumberJSON(List<Double> value) { this.yNumberJSON = value; }
+
+    @JsonProperty("y_number_minus_zero.json")
+    public List<Long> getYNumberMinusZeroJSON() { return yNumberMinusZeroJSON; }
+    @JsonProperty("y_number_minus_zero.json")
+    public void setYNumberMinusZeroJSON(List<Long> value) { this.yNumberMinusZeroJSON = value; }
+
+    @JsonProperty("y_number_negative_int.json")
+    public List<Long> getYNumberNegativeIntJSON() { return yNumberNegativeIntJSON; }
+    @JsonProperty("y_number_negative_int.json")
+    public void setYNumberNegativeIntJSON(List<Long> value) { this.yNumberNegativeIntJSON = value; }
+
+    @JsonProperty("y_number_negative_one.json")
+    public List<Long> getYNumberNegativeOneJSON() { return yNumberNegativeOneJSON; }
+    @JsonProperty("y_number_negative_one.json")
+    public void setYNumberNegativeOneJSON(List<Long> value) { this.yNumberNegativeOneJSON = value; }
+
+    @JsonProperty("y_number_negative_zero.json")
+    public List<Long> getYNumberNegativeZeroJSON() { return yNumberNegativeZeroJSON; }
+    @JsonProperty("y_number_negative_zero.json")
+    public void setYNumberNegativeZeroJSON(List<Long> value) { this.yNumberNegativeZeroJSON = value; }
+
+    @JsonProperty("y_number_real_capital_e.json")
+    public List<Double> getYNumberRealCapitalEJSON() { return yNumberRealCapitalEJSON; }
+    @JsonProperty("y_number_real_capital_e.json")
+    public void setYNumberRealCapitalEJSON(List<Double> value) { this.yNumberRealCapitalEJSON = value; }
+
+    @JsonProperty("y_number_real_capital_e_neg_exp.json")
+    public List<Double> getYNumberRealCapitalENegExpJSON() { return yNumberRealCapitalENegExpJSON; }
+    @JsonProperty("y_number_real_capital_e_neg_exp.json")
+    public void setYNumberRealCapitalENegExpJSON(List<Double> value) { this.yNumberRealCapitalENegExpJSON = value; }
+
+    @JsonProperty("y_number_real_capital_e_pos_exp.json")
+    public List<Double> getYNumberRealCapitalEPosExpJSON() { return yNumberRealCapitalEPosExpJSON; }
+    @JsonProperty("y_number_real_capital_e_pos_exp.json")
+    public void setYNumberRealCapitalEPosExpJSON(List<Double> value) { this.yNumberRealCapitalEPosExpJSON = value; }
+
+    @JsonProperty("y_number_real_exponent.json")
+    public List<Double> getYNumberRealExponentJSON() { return yNumberRealExponentJSON; }
+    @JsonProperty("y_number_real_exponent.json")
+    public void setYNumberRealExponentJSON(List<Double> value) { this.yNumberRealExponentJSON = value; }
+
+    @JsonProperty("y_number_real_fraction_exponent.json")
+    public List<Double> getYNumberRealFractionExponentJSON() { return yNumberRealFractionExponentJSON; }
+    @JsonProperty("y_number_real_fraction_exponent.json")
+    public void setYNumberRealFractionExponentJSON(List<Double> value) { this.yNumberRealFractionExponentJSON = value; }
+
+    @JsonProperty("y_number_real_neg_exp.json")
+    public List<Double> getYNumberRealNegExpJSON() { return yNumberRealNegExpJSON; }
+    @JsonProperty("y_number_real_neg_exp.json")
+    public void setYNumberRealNegExpJSON(List<Double> value) { this.yNumberRealNegExpJSON = value; }
+
+    @JsonProperty("y_number_real_pos_exponent.json")
+    public List<Double> getYNumberRealPosExponentJSON() { return yNumberRealPosExponentJSON; }
+    @JsonProperty("y_number_real_pos_exponent.json")
+    public void setYNumberRealPosExponentJSON(List<Double> value) { this.yNumberRealPosExponentJSON = value; }
+
+    @JsonProperty("y_number_simple_int.json")
+    public List<Long> getYNumberSimpleIntJSON() { return yNumberSimpleIntJSON; }
+    @JsonProperty("y_number_simple_int.json")
+    public void setYNumberSimpleIntJSON(List<Long> value) { this.yNumberSimpleIntJSON = value; }
+
+    @JsonProperty("y_number_simple_real.json")
+    public List<Double> getYNumberSimpleRealJSON() { return yNumberSimpleRealJSON; }
+    @JsonProperty("y_number_simple_real.json")
+    public void setYNumberSimpleRealJSON(List<Double> value) { this.yNumberSimpleRealJSON = value; }
+
+    @JsonProperty("y_object_basic.json")
+    public YObjectBasicJSON getYObjectBasicJSON() { return yObjectBasicJSON; }
+    @JsonProperty("y_object_basic.json")
+    public void setYObjectBasicJSON(YObjectBasicJSON value) { this.yObjectBasicJSON = value; }
+
+    @JsonProperty("y_object_empty.json")
+    public JSON getYObjectEmptyJSON() { return yObjectEmptyJSON; }
+    @JsonProperty("y_object_empty.json")
+    public void setYObjectEmptyJSON(JSON value) { this.yObjectEmptyJSON = value; }
+
+    @JsonProperty("y_object_empty_key.json")
+    public YObjectEmptyKeyJSON getYObjectEmptyKeyJSON() { return yObjectEmptyKeyJSON; }
+    @JsonProperty("y_object_empty_key.json")
+    public void setYObjectEmptyKeyJSON(YObjectEmptyKeyJSON value) { this.yObjectEmptyKeyJSON = value; }
+
+    @JsonProperty("y_object_escaped_null_in_key.json")
+    public YObjectEscapedNullInKeyJSON getYObjectEscapedNullInKeyJSON() { return yObjectEscapedNullInKeyJSON; }
+    @JsonProperty("y_object_escaped_null_in_key.json")
+    public void setYObjectEscapedNullInKeyJSON(YObjectEscapedNullInKeyJSON value) { this.yObjectEscapedNullInKeyJSON = value; }
+
+    @JsonProperty("y_object_extreme_numbers.json")
+    public YObjectExtremeNumbersJSON getYObjectExtremeNumbersJSON() { return yObjectExtremeNumbersJSON; }
+    @JsonProperty("y_object_extreme_numbers.json")
+    public void setYObjectExtremeNumbersJSON(YObjectExtremeNumbersJSON value) { this.yObjectExtremeNumbersJSON = value; }
+
+    @JsonProperty("y_object.json")
+    public YObjectJSON getYObjectJSON() { return yObjectJSON; }
+    @JsonProperty("y_object.json")
+    public void setYObjectJSON(YObjectJSON value) { this.yObjectJSON = value; }
+
+    @JsonProperty("y_object_long_strings.json")
+    public YObjectLongStringsJSON getYObjectLongStringsJSON() { return yObjectLongStringsJSON; }
+    @JsonProperty("y_object_long_strings.json")
+    public void setYObjectLongStringsJSON(YObjectLongStringsJSON value) { this.yObjectLongStringsJSON = value; }
+
+    @JsonProperty("y_object_simple.json")
+    public YObjectSimpleJSON getYObjectSimpleJSON() { return yObjectSimpleJSON; }
+    @JsonProperty("y_object_simple.json")
+    public void setYObjectSimpleJSON(YObjectSimpleJSON value) { this.yObjectSimpleJSON = value; }
+
+    @JsonProperty("y_object_string_unicode.json")
+    public YObjectStringUnicodeJSON getYObjectStringUnicodeJSON() { return yObjectStringUnicodeJSON; }
+    @JsonProperty("y_object_string_unicode.json")
+    public void setYObjectStringUnicodeJSON(YObjectStringUnicodeJSON value) { this.yObjectStringUnicodeJSON = value; }
+
+    @JsonProperty("y_object_with_newlines.json")
+    public YObjectWithNewlinesJSON getYObjectWithNewlinesJSON() { return yObjectWithNewlinesJSON; }
+    @JsonProperty("y_object_with_newlines.json")
+    public void setYObjectWithNewlinesJSON(YObjectWithNewlinesJSON value) { this.yObjectWithNewlinesJSON = value; }
+
+    @JsonProperty("y_string_1_2_3_bytes_UTF-8_sequences.json")
+    public List<String> getYString12_3_BytesUTF8SequencesJSON() { return yString1_2_3_BytesUTF8_SequencesJSON; }
+    @JsonProperty("y_string_1_2_3_bytes_UTF-8_sequences.json")
+    public void setYString12_3_BytesUTF8SequencesJSON(List<String> value) { this.yString1_2_3_BytesUTF8_SequencesJSON = value; }
+
+    @JsonProperty("y_string_accepted_surrogate_pair.json")
+    public List<String> getYStringAcceptedSurrogatePairJSON() { return yStringAcceptedSurrogatePairJSON; }
+    @JsonProperty("y_string_accepted_surrogate_pair.json")
+    public void setYStringAcceptedSurrogatePairJSON(List<String> value) { this.yStringAcceptedSurrogatePairJSON = value; }
+
+    @JsonProperty("y_string_accepted_surrogate_pairs.json")
+    public List<String> getYStringAcceptedSurrogatePairsJSON() { return yStringAcceptedSurrogatePairsJSON; }
+    @JsonProperty("y_string_accepted_surrogate_pairs.json")
+    public void setYStringAcceptedSurrogatePairsJSON(List<String> value) { this.yStringAcceptedSurrogatePairsJSON = value; }
+
+    @JsonProperty("y_string_allowed_escapes.json")
+    public List<String> getYStringAllowedEscapesJSON() { return yStringAllowedEscapesJSON; }
+    @JsonProperty("y_string_allowed_escapes.json")
+    public void setYStringAllowedEscapesJSON(List<String> value) { this.yStringAllowedEscapesJSON = value; }
+
+    @JsonProperty("y_string_backslash_and_u_escaped_zero.json")
+    public List<String> getYStringBackslashAndUEscapedZeroJSON() { return yStringBackslashAndUEscapedZeroJSON; }
+    @JsonProperty("y_string_backslash_and_u_escaped_zero.json")
+    public void setYStringBackslashAndUEscapedZeroJSON(List<String> value) { this.yStringBackslashAndUEscapedZeroJSON = value; }
+
+    @JsonProperty("y_string_backslash_doublequotes.json")
+    public List<String> getYStringBackslashDoublequotesJSON() { return yStringBackslashDoublequotesJSON; }
+    @JsonProperty("y_string_backslash_doublequotes.json")
+    public void setYStringBackslashDoublequotesJSON(List<String> value) { this.yStringBackslashDoublequotesJSON = value; }
+
+    @JsonProperty("y_string_comments.json")
+    public List<String> getYStringCommentsJSON() { return yStringCommentsJSON; }
+    @JsonProperty("y_string_comments.json")
+    public void setYStringCommentsJSON(List<String> value) { this.yStringCommentsJSON = value; }
+
+    @JsonProperty("y_string_double_escape_a.json")
+    public List<String> getYStringDoubleEscapeAJSON() { return yStringDoubleEscapeAJSON; }
+    @JsonProperty("y_string_double_escape_a.json")
+    public void setYStringDoubleEscapeAJSON(List<String> value) { this.yStringDoubleEscapeAJSON = value; }
+
+    @JsonProperty("y_string_double_escape_n.json")
+    public List<String> getYStringDoubleEscapeNJSON() { return yStringDoubleEscapeNJSON; }
+    @JsonProperty("y_string_double_escape_n.json")
+    public void setYStringDoubleEscapeNJSON(List<String> value) { this.yStringDoubleEscapeNJSON = value; }
+
+    @JsonProperty("y_string_escaped_control_character.json")
+    public List<String> getYStringEscapedControlCharacterJSON() { return yStringEscapedControlCharacterJSON; }
+    @JsonProperty("y_string_escaped_control_character.json")
+    public void setYStringEscapedControlCharacterJSON(List<String> value) { this.yStringEscapedControlCharacterJSON = value; }
+
+    @JsonProperty("y_string_escaped_noncharacter.json")
+    public List<String> getYStringEscapedNoncharacterJSON() { return yStringEscapedNoncharacterJSON; }
+    @JsonProperty("y_string_escaped_noncharacter.json")
+    public void setYStringEscapedNoncharacterJSON(List<String> value) { this.yStringEscapedNoncharacterJSON = value; }
+
+    @JsonProperty("y_string_in_array.json")
+    public List<String> getYStringInArrayJSON() { return yStringInArrayJSON; }
+    @JsonProperty("y_string_in_array.json")
+    public void setYStringInArrayJSON(List<String> value) { this.yStringInArrayJSON = value; }
+
+    @JsonProperty("y_string_in_array_with_leading_space.json")
+    public List<String> getYStringInArrayWithLeadingSpaceJSON() { return yStringInArrayWithLeadingSpaceJSON; }
+    @JsonProperty("y_string_in_array_with_leading_space.json")
+    public void setYStringInArrayWithLeadingSpaceJSON(List<String> value) { this.yStringInArrayWithLeadingSpaceJSON = value; }
+
+    @JsonProperty("y_string_last_surrogates_1_and_2.json")
+    public List<String> getYStringLastSurrogates1And2JSON() { return yStringLastSurrogates1_And2JSON; }
+    @JsonProperty("y_string_last_surrogates_1_and_2.json")
+    public void setYStringLastSurrogates1And2JSON(List<String> value) { this.yStringLastSurrogates1_And2JSON = value; }
+
+    @JsonProperty("y_string_nbsp_uescaped.json")
+    public List<String> getYStringNbspUescapedJSON() { return yStringNbspUescapedJSON; }
+    @JsonProperty("y_string_nbsp_uescaped.json")
+    public void setYStringNbspUescapedJSON(List<String> value) { this.yStringNbspUescapedJSON = value; }
+
+    @JsonProperty("y_string_nonCharacterInUTF-8_U+10FFFF.json")
+    public List<String> getYStringNonCharacterInUTF8U10FFFFJSON() { return yStringNonCharacterInUTF8_U10FFFFJSON; }
+    @JsonProperty("y_string_nonCharacterInUTF-8_U+10FFFF.json")
+    public void setYStringNonCharacterInUTF8U10FFFFJSON(List<String> value) { this.yStringNonCharacterInUTF8_U10FFFFJSON = value; }
+
+    @JsonProperty("y_string_nonCharacterInUTF-8_U+1FFFF.json")
+    public List<String> getYStringNonCharacterInUTF8U1FFFFJSON() { return yStringNonCharacterInUTF8_U1FFFFJSON; }
+    @JsonProperty("y_string_nonCharacterInUTF-8_U+1FFFF.json")
+    public void setYStringNonCharacterInUTF8U1FFFFJSON(List<String> value) { this.yStringNonCharacterInUTF8_U1FFFFJSON = value; }
+
+    @JsonProperty("y_string_nonCharacterInUTF-8_U+FFFF.json")
+    public List<String> getYStringNonCharacterInUTF8UFFFFJSON() { return yStringNonCharacterInUTF8_UFFFFJSON; }
+    @JsonProperty("y_string_nonCharacterInUTF-8_U+FFFF.json")
+    public void setYStringNonCharacterInUTF8UFFFFJSON(List<String> value) { this.yStringNonCharacterInUTF8_UFFFFJSON = value; }
+
+    @JsonProperty("y_string_null_escape.json")
+    public List<String> getYStringNullEscapeJSON() { return yStringNullEscapeJSON; }
+    @JsonProperty("y_string_null_escape.json")
+    public void setYStringNullEscapeJSON(List<String> value) { this.yStringNullEscapeJSON = value; }
+
+    @JsonProperty("y_string_one-byte-utf-8.json")
+    public List<String> getYStringOneByteUTF8JSON() { return yStringOneByteUTF8JSON; }
+    @JsonProperty("y_string_one-byte-utf-8.json")
+    public void setYStringOneByteUTF8JSON(List<String> value) { this.yStringOneByteUTF8JSON = value; }
+
+    @JsonProperty("y_string_pi.json")
+    public List<String> getYStringPiJSON() { return yStringPiJSON; }
+    @JsonProperty("y_string_pi.json")
+    public void setYStringPiJSON(List<String> value) { this.yStringPiJSON = value; }
+
+    @JsonProperty("y_string_simple_ascii.json")
+    public List<String> getYStringSimpleASCIIJSON() { return yStringSimpleASCIIJSON; }
+    @JsonProperty("y_string_simple_ascii.json")
+    public void setYStringSimpleASCIIJSON(List<String> value) { this.yStringSimpleASCIIJSON = value; }
+
+    @JsonProperty("y_string_space.json")
+    public String getYStringSpaceJSON() { return yStringSpaceJSON; }
+    @JsonProperty("y_string_space.json")
+    public void setYStringSpaceJSON(String value) { this.yStringSpaceJSON = value; }
+
+    @JsonProperty("y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json")
+    public List<String> getYStringSurrogatesU1D11EMUSICALSYMBOLGCLEFJSON() { return yStringSurrogatesU1D11EMUSICALSYMBOLGCLEFJSON; }
+    @JsonProperty("y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json")
+    public void setYStringSurrogatesU1D11EMUSICALSYMBOLGCLEFJSON(List<String> value) { this.yStringSurrogatesU1D11EMUSICALSYMBOLGCLEFJSON = value; }
+
+    @JsonProperty("y_string_three-byte-utf-8.json")
+    public List<String> getYStringThreeByteUTF8JSON() { return yStringThreeByteUTF8JSON; }
+    @JsonProperty("y_string_three-byte-utf-8.json")
+    public void setYStringThreeByteUTF8JSON(List<String> value) { this.yStringThreeByteUTF8JSON = value; }
+
+    @JsonProperty("y_string_two-byte-utf-8.json")
+    public List<String> getYStringTwoByteUTF8JSON() { return yStringTwoByteUTF8JSON; }
+    @JsonProperty("y_string_two-byte-utf-8.json")
+    public void setYStringTwoByteUTF8JSON(List<String> value) { this.yStringTwoByteUTF8JSON = value; }
+
+    @JsonProperty("y_string_u+2028_line_sep.json")
+    public List<String> getYStringU2028LineSepJSON() { return yStringU2028_LineSepJSON; }
+    @JsonProperty("y_string_u+2028_line_sep.json")
+    public void setYStringU2028LineSepJSON(List<String> value) { this.yStringU2028_LineSepJSON = value; }
+
+    @JsonProperty("y_string_u+2029_par_sep.json")
+    public List<String> getYStringU2029ParSepJSON() { return yStringU2029_ParSepJSON; }
+    @JsonProperty("y_string_u+2029_par_sep.json")
+    public void setYStringU2029ParSepJSON(List<String> value) { this.yStringU2029_ParSepJSON = value; }
+
+    @JsonProperty("y_string_uEscape.json")
+    public List<String> getYStringUEscapeJSON() { return yStringUEscapeJSON; }
+    @JsonProperty("y_string_uEscape.json")
+    public void setYStringUEscapeJSON(List<String> value) { this.yStringUEscapeJSON = value; }
+
+    @JsonProperty("y_string_uescaped_newline.json")
+    public List<String> getYStringUescapedNewlineJSON() { return yStringUescapedNewlineJSON; }
+    @JsonProperty("y_string_uescaped_newline.json")
+    public void setYStringUescapedNewlineJSON(List<String> value) { this.yStringUescapedNewlineJSON = value; }
+
+    @JsonProperty("y_string_unescaped_char_delete.json")
+    public List<String> getYStringUnescapedCharDeleteJSON() { return yStringUnescapedCharDeleteJSON; }
+    @JsonProperty("y_string_unescaped_char_delete.json")
+    public void setYStringUnescapedCharDeleteJSON(List<String> value) { this.yStringUnescapedCharDeleteJSON = value; }
+
+    @JsonProperty("y_string_unicode_2.json")
+    public List<String> getYStringUnicode2JSON() { return yStringUnicode2JSON; }
+    @JsonProperty("y_string_unicode_2.json")
+    public void setYStringUnicode2JSON(List<String> value) { this.yStringUnicode2JSON = value; }
+
+    @JsonProperty("y_string_unicodeEscapedBackslash.json")
+    public List<String> getYStringUnicodeEscapedBackslashJSON() { return yStringUnicodeEscapedBackslashJSON; }
+    @JsonProperty("y_string_unicodeEscapedBackslash.json")
+    public void setYStringUnicodeEscapedBackslashJSON(List<String> value) { this.yStringUnicodeEscapedBackslashJSON = value; }
+
+    @JsonProperty("y_string_unicode_escaped_double_quote.json")
+    public List<String> getYStringUnicodeEscapedDoubleQuoteJSON() { return yStringUnicodeEscapedDoubleQuoteJSON; }
+    @JsonProperty("y_string_unicode_escaped_double_quote.json")
+    public void setYStringUnicodeEscapedDoubleQuoteJSON(List<String> value) { this.yStringUnicodeEscapedDoubleQuoteJSON = value; }
+
+    @JsonProperty("y_string_unicode.json")
+    public List<String> getYStringUnicodeJSON() { return yStringUnicodeJSON; }
+    @JsonProperty("y_string_unicode.json")
+    public void setYStringUnicodeJSON(List<String> value) { this.yStringUnicodeJSON = value; }
+
+    @JsonProperty("y_string_unicode_U+10FFFE_nonchar.json")
+    public List<String> getYStringUnicodeU10FFFENoncharJSON() { return yStringUnicodeU10FFFENoncharJSON; }
+    @JsonProperty("y_string_unicode_U+10FFFE_nonchar.json")
+    public void setYStringUnicodeU10FFFENoncharJSON(List<String> value) { this.yStringUnicodeU10FFFENoncharJSON = value; }
+
+    @JsonProperty("y_string_unicode_U+1FFFE_nonchar.json")
+    public List<String> getYStringUnicodeU1FFFENoncharJSON() { return yStringUnicodeU1FFFENoncharJSON; }
+    @JsonProperty("y_string_unicode_U+1FFFE_nonchar.json")
+    public void setYStringUnicodeU1FFFENoncharJSON(List<String> value) { this.yStringUnicodeU1FFFENoncharJSON = value; }
+
+    @JsonProperty("y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json")
+    public List<String> getYStringUnicodeU200BZEROWIDTHSPACEJSON() { return yStringUnicodeU200BZEROWIDTHSPACEJSON; }
+    @JsonProperty("y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json")
+    public void setYStringUnicodeU200BZEROWIDTHSPACEJSON(List<String> value) { this.yStringUnicodeU200BZEROWIDTHSPACEJSON = value; }
+
+    @JsonProperty("y_string_unicode_U+2064_invisible_plus.json")
+    public List<String> getYStringUnicodeU2064InvisiblePlusJSON() { return yStringUnicodeU2064_InvisiblePlusJSON; }
+    @JsonProperty("y_string_unicode_U+2064_invisible_plus.json")
+    public void setYStringUnicodeU2064InvisiblePlusJSON(List<String> value) { this.yStringUnicodeU2064_InvisiblePlusJSON = value; }
+
+    @JsonProperty("y_string_unicode_U+FDD0_nonchar.json")
+    public List<String> getYStringUnicodeUFDD0NoncharJSON() { return yStringUnicodeUFDD0NoncharJSON; }
+    @JsonProperty("y_string_unicode_U+FDD0_nonchar.json")
+    public void setYStringUnicodeUFDD0NoncharJSON(List<String> value) { this.yStringUnicodeUFDD0NoncharJSON = value; }
+
+    @JsonProperty("y_string_unicode_U+FFFE_nonchar.json")
+    public List<String> getYStringUnicodeUFFFENoncharJSON() { return yStringUnicodeUFFFENoncharJSON; }
+    @JsonProperty("y_string_unicode_U+FFFE_nonchar.json")
+    public void setYStringUnicodeUFFFENoncharJSON(List<String> value) { this.yStringUnicodeUFFFENoncharJSON = value; }
+
+    @JsonProperty("y_string_utf8.json")
+    public List<String> getYStringUtf8JSON() { return yStringUtf8JSON; }
+    @JsonProperty("y_string_utf8.json")
+    public void setYStringUtf8JSON(List<String> value) { this.yStringUtf8JSON = value; }
+
+    @JsonProperty("y_string_with_del_character.json")
+    public List<String> getYStringWithDelCharacterJSON() { return yStringWithDelCharacterJSON; }
+    @JsonProperty("y_string_with_del_character.json")
+    public void setYStringWithDelCharacterJSON(List<String> value) { this.yStringWithDelCharacterJSON = value; }
+
+    @JsonProperty("y_structure_lonely_false.json")
+    public boolean getYStructureLonelyFalseJSON() { return yStructureLonelyFalseJSON; }
+    @JsonProperty("y_structure_lonely_false.json")
+    public void setYStructureLonelyFalseJSON(boolean value) { this.yStructureLonelyFalseJSON = value; }
+
+    @JsonProperty("y_structure_lonely_int.json")
+    public long getYStructureLonelyIntJSON() { return yStructureLonelyIntJSON; }
+    @JsonProperty("y_structure_lonely_int.json")
+    public void setYStructureLonelyIntJSON(long value) { this.yStructureLonelyIntJSON = value; }
+
+    @JsonProperty("y_structure_lonely_negative_real.json")
+    public double getYStructureLonelyNegativeRealJSON() { return yStructureLonelyNegativeRealJSON; }
+    @JsonProperty("y_structure_lonely_negative_real.json")
+    public void setYStructureLonelyNegativeRealJSON(double value) { this.yStructureLonelyNegativeRealJSON = value; }
+
+    @JsonProperty("y_structure_lonely_null.json")
+    public Object getYStructureLonelyNullJSON() { return yStructureLonelyNullJSON; }
+    @JsonProperty("y_structure_lonely_null.json")
+    public void setYStructureLonelyNullJSON(Object value) { this.yStructureLonelyNullJSON = value; }
+
+    @JsonProperty("y_structure_lonely_string.json")
+    public String getYStructureLonelyStringJSON() { return yStructureLonelyStringJSON; }
+    @JsonProperty("y_structure_lonely_string.json")
+    public void setYStructureLonelyStringJSON(String value) { this.yStructureLonelyStringJSON = value; }
+
+    @JsonProperty("y_structure_lonely_true.json")
+    public boolean getYStructureLonelyTrueJSON() { return yStructureLonelyTrueJSON; }
+    @JsonProperty("y_structure_lonely_true.json")
+    public void setYStructureLonelyTrueJSON(boolean value) { this.yStructureLonelyTrueJSON = value; }
+
+    @JsonProperty("y_structure_string_empty.json")
+    public String getYStructureStringEmptyJSON() { return yStructureStringEmptyJSON; }
+    @JsonProperty("y_structure_string_empty.json")
+    public void setYStructureStringEmptyJSON(String value) { this.yStructureStringEmptyJSON = value; }
+
+    @JsonProperty("y_structure_trailing_newline.json")
+    public List<String> getYStructureTrailingNewlineJSON() { return yStructureTrailingNewlineJSON; }
+    @JsonProperty("y_structure_trailing_newline.json")
+    public void setYStructureTrailingNewlineJSON(List<String> value) { this.yStructureTrailingNewlineJSON = value; }
+
+    @JsonProperty("y_structure_true_in_array.json")
+    public List<Boolean> getYStructureTrueInArrayJSON() { return yStructureTrueInArrayJSON; }
+    @JsonProperty("y_structure_true_in_array.json")
+    public void setYStructureTrueInArrayJSON(List<Boolean> value) { this.yStructureTrueInArrayJSON = value; }
+
+    @JsonProperty("y_structure_whitespace_array.json")
+    public List<Object> getYStructureWhitespaceArrayJSON() { return yStructureWhitespaceArrayJSON; }
+    @JsonProperty("y_structure_whitespace_array.json")
+    public void setYStructureWhitespaceArrayJSON(List<Object> value) { this.yStructureWhitespaceArrayJSON = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/X.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/X.java
new file mode 100644
index 0000000..2996ec6
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/X.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class X {
+    private String id;
+
+    @JsonProperty("id")
+    public String getID() { return id; }
+    @JsonProperty("id")
+    public void setID(String value) { this.id = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YArrayHeterogeneousJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YArrayHeterogeneousJSON.java
new file mode 100644
index 0000000..4f50402
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YArrayHeterogeneousJSON.java
@@ -0,0 +1,58 @@
+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 = YArrayHeterogeneousJSON.Deserializer.class)
+@JsonSerialize(using = YArrayHeterogeneousJSON.Serializer.class)
+public class YArrayHeterogeneousJSON {
+    public JSON jsonValue;
+    public Long integerValue;
+    public String stringValue;
+
+    static class Deserializer extends JsonDeserializer<YArrayHeterogeneousJSON> {
+        @Override
+        public YArrayHeterogeneousJSON deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            YArrayHeterogeneousJSON value = new YArrayHeterogeneousJSON();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                    value.integerValue = jsonParser.readValueAs(Long.class);
+                    break;
+                case VALUE_STRING:
+                    String string = jsonParser.readValueAs(String.class);
+                    value.stringValue = string;
+                    break;
+                case START_OBJECT:
+                    value.jsonValue = jsonParser.readValueAs(JSON.class);
+                    break;
+                default: throw new IOException("Cannot deserialize YArrayHeterogeneousJSON");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<YArrayHeterogeneousJSON> {
+        @Override
+        public void serialize(YArrayHeterogeneousJSON obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.jsonValue != null) {
+                jsonGenerator.writeObject(obj.jsonValue);
+                return;
+            }
+            if (obj.integerValue != null) {
+                jsonGenerator.writeObject(obj.integerValue);
+                return;
+            }
+            if (obj.stringValue != null) {
+                jsonGenerator.writeObject(obj.stringValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectBasicJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectBasicJSON.java
new file mode 100644
index 0000000..cee9714
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectBasicJSON.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectBasicJSON {
+    private String asd;
+
+    @JsonProperty("asd")
+    public String getAsd() { return asd; }
+    @JsonProperty("asd")
+    public void setAsd(String value) { this.asd = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectEmptyKeyJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectEmptyKeyJSON.java
new file mode 100644
index 0000000..1765cba
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectEmptyKeyJSON.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectEmptyKeyJSON {
+    private long empty;
+
+    @JsonAnyGetter
+    public java.util.Map<String, Object> getEmpty() { return java.util.Collections.<String, Object>singletonMap("", empty); }
+    @JsonAnySetter
+    public void setEmpty(String key, long value) { if (key.isEmpty()) this.empty = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectEscapedNullInKeyJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectEscapedNullInKeyJSON.java
new file mode 100644
index 0000000..c3a3148
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectEscapedNullInKeyJSON.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectEscapedNullInKeyJSON {
+    private long fooBar;
+
+    @JsonProperty("foo bar")
+    public long getFooBar() { return fooBar; }
+    @JsonProperty("foo bar")
+    public void setFooBar(long value) { this.fooBar = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectExtremeNumbersJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectExtremeNumbersJSON.java
new file mode 100644
index 0000000..5ef3f36
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectExtremeNumbersJSON.java
@@ -0,0 +1,18 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectExtremeNumbersJSON {
+    private double max;
+    private double min;
+
+    @JsonProperty("max")
+    public double getMax() { return max; }
+    @JsonProperty("max")
+    public void setMax(double value) { this.max = value; }
+
+    @JsonProperty("min")
+    public double getMin() { return min; }
+    @JsonProperty("min")
+    public void setMin(double value) { this.min = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectJSON.java
new file mode 100644
index 0000000..171bfab
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectJSON.java
@@ -0,0 +1,18 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectJSON {
+    private String asd;
+    private String dfg;
+
+    @JsonProperty("asd")
+    public String getAsd() { return asd; }
+    @JsonProperty("asd")
+    public void setAsd(String value) { this.asd = value; }
+
+    @JsonProperty("dfg")
+    public String getDfg() { return dfg; }
+    @JsonProperty("dfg")
+    public void setDfg(String value) { this.dfg = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectLongStringsJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectLongStringsJSON.java
new file mode 100644
index 0000000..1c7bcd6
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectLongStringsJSON.java
@@ -0,0 +1,19 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+import java.util.List;
+
+public class YObjectLongStringsJSON {
+    private String id;
+    private List<X> x;
+
+    @JsonProperty("id")
+    public String getID() { return id; }
+    @JsonProperty("id")
+    public void setID(String value) { this.id = value; }
+
+    @JsonProperty("x")
+    public List<X> getX() { return x; }
+    @JsonProperty("x")
+    public void setX(List<X> value) { this.x = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectSimpleJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectSimpleJSON.java
new file mode 100644
index 0000000..c525b38
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectSimpleJSON.java
@@ -0,0 +1,13 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+import java.util.List;
+
+public class YObjectSimpleJSON {
+    private List<Object> a;
+
+    @JsonProperty("a")
+    public List<Object> getA() { return a; }
+    @JsonProperty("a")
+    public void setA(List<Object> value) { this.a = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectStringUnicodeJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectStringUnicodeJSON.java
new file mode 100644
index 0000000..583f30d
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectStringUnicodeJSON.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectStringUnicodeJSON {
+    private String title;
+
+    @JsonProperty("title")
+    public String getTitle() { return title; }
+    @JsonProperty("title")
+    public void setTitle(String value) { this.title = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectWithNewlinesJSON.java b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectWithNewlinesJSON.java
new file mode 100644
index 0000000..11625d9
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/nst-test-suite.json/default/src/main/java/io/quicktype/YObjectWithNewlinesJSON.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class YObjectWithNewlinesJSON {
+    private String a;
+
+    @JsonProperty("a")
+    public String getA() { return a; }
+    @JsonProperty("a")
+    public void setA(String value) { this.a = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/simple-identifiers.json/default/src/main/java/io/quicktype/Converter.java b/head/java-lombok/test/inputs/json/priority/simple-identifiers.json/default/src/main/java/io/quicktype/Converter.java
new file mode 100644
index 0000000..cf0c886
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/simple-identifiers.json/default/src/main/java/io/quicktype/Converter.java
@@ -0,0 +1,102 @@
+// To use this code, add the following Maven dependency to your project:
+//
+//
+//     com.fasterxml.jackson.core     : jackson-databind          : 2.9.0
+//     com.fasterxml.jackson.datatype : jackson-datatype-jsr310   : 2.9.0
+//
+// Import this package:
+//
+//     import io.quicktype.Converter;
+//
+// Then you can deserialize a JSON string with
+//
+//     TopLevel data = Converter.fromJsonString(jsonString);
+
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.*;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.temporal.ChronoField;
+
+public class Converter {
+    // Date-time helpers
+
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_INSTANT)
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetDateTime parseDateTimeString(String str) {
+        return ZonedDateTime.from(Converter.DATE_TIME_FORMATTER.parse(str)).toOffsetDateTime();
+    }
+
+    private static final DateTimeFormatter TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_TIME)
+            .parseDefaulting(ChronoField.YEAR, 2020)
+            .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
+            .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetTime parseTimeString(String str) {
+        return ZonedDateTime.from(Converter.TIME_FORMATTER.parse(str)).toOffsetDateTime().toOffsetTime();
+    }
+    // Serialize/deserialize helpers
+
+    public static TopLevel fromJsonString(String json) throws IOException {
+        return getObjectReader().readValue(json);
+    }
+
+    public static String toJsonString(TopLevel obj) throws JsonProcessingException {
+        return getObjectWriter().writeValueAsString(obj);
+    }
+
+    private static ObjectReader reader;
+    private static ObjectWriter writer;
+
+    private static void instantiateMapper() {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.findAndRegisterModules();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(OffsetDateTime.class, new JsonDeserializer<OffsetDateTime>() {
+            @Override
+            public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseDateTimeString(value);
+            }
+        });
+        mapper.registerModule(module);
+        reader = mapper.readerFor(TopLevel.class);
+        writer = mapper.writerFor(TopLevel.class);
+    }
+
+    private static ObjectReader getObjectReader() {
+        if (reader == null) instantiateMapper();
+        return reader;
+    }
+
+    private static ObjectWriter getObjectWriter() {
+        if (writer == null) instantiateMapper();
+        return writer;
+    }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/simple-identifiers.json/default/src/main/java/io/quicktype/TopLevel.java b/head/java-lombok/test/inputs/json/priority/simple-identifiers.json/default/src/main/java/io/quicktype/TopLevel.java
new file mode 100644
index 0000000..3223dfb
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/simple-identifiers.json/default/src/main/java/io/quicktype/TopLevel.java
@@ -0,0 +1,60 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TopLevel {
+    private String empty;
+    private String purpleX;
+    private String topLevel;
+    private String topLevelContinue;
+    private String topLevelNull;
+    private String topLevelX;
+    private String undefined;
+    private String x;
+    private String xY;
+
+    @JsonAnyGetter
+    public java.util.Map<String, Object> getEmpty() { return java.util.Collections.<String, Object>singletonMap("", empty); }
+    @JsonAnySetter
+    public void setEmpty(String key, String value) { if (key.isEmpty()) this.empty = value; }
+
+    @JsonProperty("x'")
+    public String getPurpleX() { return purpleX; }
+    @JsonProperty("x'")
+    public void setPurpleX(String value) { this.purpleX = value; }
+
+    @JsonProperty("{}")
+    public String getTopLevel() { return topLevel; }
+    @JsonProperty("{}")
+    public void setTopLevel(String value) { this.topLevel = value; }
+
+    @JsonProperty("continue")
+    public String getTopLevelContinue() { return topLevelContinue; }
+    @JsonProperty("continue")
+    public void setTopLevelContinue(String value) { this.topLevelContinue = value; }
+
+    @JsonProperty("null")
+    public String getTopLevelNull() { return topLevelNull; }
+    @JsonProperty("null")
+    public void setTopLevelNull(String value) { this.topLevelNull = value; }
+
+    @JsonProperty("x\"")
+    public String getTopLevelX() { return topLevelX; }
+    @JsonProperty("x\"")
+    public void setTopLevelX(String value) { this.topLevelX = value; }
+
+    @JsonProperty("undefined")
+    public String getUndefined() { return undefined; }
+    @JsonProperty("undefined")
+    public void setUndefined(String value) { this.undefined = value; }
+
+    @JsonProperty("x")
+    public String getX() { return x; }
+    @JsonProperty("x")
+    public void setX(String value) { this.x = value; }
+
+    @JsonProperty("x y")
+    public String getXY() { return xY; }
+    @JsonProperty("x y")
+    public void setXY(String value) { this.xY = value; }
+}
diff --git a/head/php/test/inputs/json/misc/7eb30.json/default/TopLevel.php b/head/php/test/inputs/json/misc/7eb30.json/default/TopLevel.php
new file mode 100644
index 0000000..db997c4
--- /dev/null
+++ b/head/php/test/inputs/json/misc/7eb30.json/default/TopLevel.php
@@ -0,0 +1,1576 @@
+<?php
+declare(strict_types=1);
+
+// This is an autogenerated file:TopLevel
+
+class TopLevel {
+    private int $count; // json:count Required
+    private string $next; // json:next Required
+    private mixed $previous; // json:previous Optional
+    private array $results; // json:results Required
+
+    /**
+     * @param int $count
+     * @param string $next
+     * @param mixed $previous
+     * @param array $results
+     */
+    public function __construct(int $count, string $next, mixed $previous, array $results) {
+        $this->count = $count;
+        $this->next = $next;
+        $this->previous = $previous;
+        $this->results = $results;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCount(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCount(): int {
+        if (TopLevel::validateCount($this->count))  {
+            return $this->count; /*int*/
+        }
+        throw new Exception('never get to this TopLevel::count');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCount(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCount(): int {
+        if (TopLevel::validateCount($this->count))  {
+            return $this->count;
+        }
+        throw new Exception('never get to getCount TopLevel::count');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCount(): int {
+        return 31; /*31:count*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromNext(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toNext(): string {
+        if (TopLevel::validateNext($this->next))  {
+            return $this->next; /*string*/
+        }
+        throw new Exception('never get to this TopLevel::next');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNext(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getNext(): string {
+        if (TopLevel::validateNext($this->next))  {
+            return $this->next;
+        }
+        throw new Exception('never get to getNext TopLevel::next');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleNext(): string {
+        return 'TopLevel::next::32'; /*32:next*/
+    }
+
+    /**
+     * @param mixed $value
+     * @throws Exception
+     * @return mixed
+     */
+    public static function fromPrevious(mixed $value): mixed {
+        return $value; /*null*/
+    }
+
+    /**
+     * @throws Exception
+     * @return mixed
+     */
+    public function toPrevious(): mixed {
+        if (TopLevel::validatePrevious($this->previous))  {
+            return $this->previous; /*null*/
+        }
+        throw new Exception('never get to this TopLevel::previous');
+    }
+
+    /**
+     * @param mixed
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrevious(mixed $value): bool {
+        if (!is_null($value)) {
+            throw new Exception("Attribute Error:TopLevel::previous");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return mixed
+     */
+    public function getPrevious(): mixed {
+        if (TopLevel::validatePrevious($this->previous))  {
+            return $this->previous;
+        }
+        throw new Exception('never get to getPrevious TopLevel::previous');
+    }
+
+    /**
+     * @return mixed
+     */
+    public static function samplePrevious(): mixed {
+        return null; /*33:previous*/
+    }
+
+    /**
+     * @param array $value
+     * @throws Exception
+     * @return array
+     */
+    public static function fromResults(array $value): array {
+        return  array_map(function ($value) {
+            return Result::from($value); /*class*/
+        }, $value);
+    }
+
+    /**
+     * @throws Exception
+     * @return array
+     */
+    public function toResults(): array {
+        if (TopLevel::validateResults($this->results))  {
+            return array_map(function ($value) {
+                return $value->to(); /*class*/
+            }, $this->results);
+        }
+        throw new Exception('never get to this TopLevel::results');
+    }
+
+    /**
+     * @param array
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateResults(array $value): bool {
+        if (!is_array($value)) {
+            throw new Exception("Attribute Error:TopLevel::results");
+        }
+        array_walk($value, function($value_v) {
+            $value_v->validate();
+        });
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return array
+     */
+    public function getResults(): array {
+        if (TopLevel::validateResults($this->results))  {
+            return $this->results;
+        }
+        throw new Exception('never get to getResults TopLevel::results');
+    }
+
+    /**
+     * @return array
+     */
+    public static function sampleResults(): array {
+        return  array(
+            Result::sample() /*34:*/
+        ); /* 34:results*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TopLevel::validateCount($this->count)
+        || TopLevel::validateNext($this->next)
+        || TopLevel::validatePrevious($this->previous)
+        || TopLevel::validateResults($this->results);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'count'} = $this->toCount();
+        $out->{'next'} = $this->toNext();
+        $out->{'previous'} = $this->toPrevious();
+        $out->{'results'} = $this->toResults();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TopLevel
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TopLevel {
+        return new TopLevel(
+         TopLevel::fromCount($obj->{'count'})
+        ,TopLevel::fromNext($obj->{'next'})
+        ,TopLevel::fromPrevious($obj->{'previous'})
+        ,TopLevel::fromResults($obj->{'results'})
+        );
+    }
+
+    /**
+     * @return TopLevel
+     */
+    public static function sample(): TopLevel {
+        return new TopLevel(
+         TopLevel::sampleCount()
+        ,TopLevel::sampleNext()
+        ,TopLevel::samplePrevious()
+        ,TopLevel::sampleResults()
+        );
+    }
+}
+
+// This is an autogenerated file:Result
+
+class Result {
+    private string $code; // json:code Required
+    private string $english; // json:english Required
+    private bool $fav; // json:fav Required
+    private Group $group; // json:group Required
+    private Location $location; // json:location Required
+    private int $minScreens; // json:min_screens Required
+    private int $numViews; // json:num_views Required
+    private string $showtimes; // json:showtimes Required
+    private int $stars; // json:stars Required
+    private Tel $tel; // json:tel Required
+    private string $thai; // json:thai Required
+    private int $todayScreens; // json:today_screens Required
+    private string $url; // json:url Required
+    private string $website; // json:website Required
+
+    /**
+     * @param string $code
+     * @param string $english
+     * @param bool $fav
+     * @param Group $group
+     * @param Location $location
+     * @param int $minScreens
+     * @param int $numViews
+     * @param string $showtimes
+     * @param int $stars
+     * @param Tel $tel
+     * @param string $thai
+     * @param int $todayScreens
+     * @param string $url
+     * @param string $website
+     */
+    public function __construct(string $code, string $english, bool $fav, Group $group, Location $location, int $minScreens, int $numViews, string $showtimes, int $stars, Tel $tel, string $thai, int $todayScreens, string $url, string $website) {
+        $this->code = $code;
+        $this->english = $english;
+        $this->fav = $fav;
+        $this->group = $group;
+        $this->location = $location;
+        $this->minScreens = $minScreens;
+        $this->numViews = $numViews;
+        $this->showtimes = $showtimes;
+        $this->stars = $stars;
+        $this->tel = $tel;
+        $this->thai = $thai;
+        $this->todayScreens = $todayScreens;
+        $this->url = $url;
+        $this->website = $website;
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromCode(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toCode(): string {
+        if (Result::validateCode($this->code))  {
+            return $this->code; /*string*/
+        }
+        throw new Exception('never get to this Result::code');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCode(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getCode(): string {
+        if (Result::validateCode($this->code))  {
+            return $this->code;
+        }
+        throw new Exception('never get to getCode Result::code');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleCode(): string {
+        return 'Result::code::31'; /*31:code*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromEnglish(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toEnglish(): string {
+        if (Result::validateEnglish($this->english))  {
+            return $this->english; /*string*/
+        }
+        throw new Exception('never get to this Result::english');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEnglish(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getEnglish(): string {
+        if (Result::validateEnglish($this->english))  {
+            return $this->english;
+        }
+        throw new Exception('never get to getEnglish Result::english');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleEnglish(): string {
+        return 'Result::english::32'; /*32:english*/
+    }
+
+    /**
+     * @param bool $value
+     * @throws Exception
+     * @return bool
+     */
+    public static function fromFav(bool $value): bool {
+        return $value; /*bool*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function toFav(): bool {
+        if (Result::validateFav($this->fav))  {
+            return $this->fav; /*bool*/
+        }
+        throw new Exception('never get to this Result::fav');
+    }
+
+    /**
+     * @param bool
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFav(bool $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function getFav(): bool {
+        if (Result::validateFav($this->fav))  {
+            return $this->fav;
+        }
+        throw new Exception('never get to getFav Result::fav');
+    }
+
+    /**
+     * @return bool
+     */
+    public static function sampleFav(): bool {
+        return true; /*33:fav*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Group
+     */
+    public static function fromGroup(stdClass $value): Group {
+        return Group::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGroup(): stdClass {
+        if (Result::validateGroup($this->group))  {
+            return $this->group->to(); /*class*/
+        }
+        throw new Exception('never get to this Result::group');
+    }
+
+    /**
+     * @param Group
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGroup(Group $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Group
+     */
+    public function getGroup(): Group {
+        if (Result::validateGroup($this->group))  {
+            return $this->group;
+        }
+        throw new Exception('never get to getGroup Result::group');
+    }
+
+    /**
+     * @return Group
+     */
+    public static function sampleGroup(): Group {
+        return Group::sample(); /*34:group*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return Location
+     */
+    public static function fromLocation(string $value): Location {
+        return Location::from($value); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toLocation(): string {
+        if (Result::validateLocation($this->location))  {
+            return Location::to($this->location); /*enum*/
+        }
+        throw new Exception('never get to this Result::location');
+    }
+
+    /**
+     * @param Location
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLocation(Location $value): bool {
+        Location::to($value);
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Location
+     */
+    public function getLocation(): Location {
+        if (Result::validateLocation($this->location))  {
+            return $this->location;
+        }
+        throw new Exception('never get to getLocation Result::location');
+    }
+
+    /**
+     * @return Location
+     */
+    public static function sampleLocation(): Location {
+        return Location::sample(); /*enum*/
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromMinScreens(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toMinScreens(): int {
+        if (Result::validateMinScreens($this->minScreens))  {
+            return $this->minScreens; /*int*/
+        }
+        throw new Exception('never get to this Result::minScreens');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMinScreens(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getMinScreens(): int {
+        if (Result::validateMinScreens($this->minScreens))  {
+            return $this->minScreens;
+        }
+        throw new Exception('never get to getMinScreens Result::minScreens');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleMinScreens(): int {
+        return 36; /*36:minScreens*/
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNumViews(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNumViews(): int {
+        if (Result::validateNumViews($this->numViews))  {
+            return $this->numViews; /*int*/
+        }
+        throw new Exception('never get to this Result::numViews');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNumViews(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNumViews(): int {
+        if (Result::validateNumViews($this->numViews))  {
+            return $this->numViews;
+        }
+        throw new Exception('never get to getNumViews Result::numViews');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNumViews(): int {
+        return 37; /*37:numViews*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromShowtimes(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toShowtimes(): string {
+        if (Result::validateShowtimes($this->showtimes))  {
+            return $this->showtimes; /*string*/
+        }
+        throw new Exception('never get to this Result::showtimes');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateShowtimes(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getShowtimes(): string {
+        if (Result::validateShowtimes($this->showtimes))  {
+            return $this->showtimes;
+        }
+        throw new Exception('never get to getShowtimes Result::showtimes');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleShowtimes(): string {
+        return 'Result::showtimes::38'; /*38:showtimes*/
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStars(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStars(): int {
+        if (Result::validateStars($this->stars))  {
+            return $this->stars; /*int*/
+        }
+        throw new Exception('never get to this Result::stars');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStars(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStars(): int {
+        if (Result::validateStars($this->stars))  {
+            return $this->stars;
+        }
+        throw new Exception('never get to getStars Result::stars');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStars(): int {
+        return 39; /*39:stars*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return Tel
+     */
+    public static function fromTel(string $value): Tel {
+        return Tel::from($value); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toTel(): string {
+        if (Result::validateTel($this->tel))  {
+            return Tel::to($this->tel); /*enum*/
+        }
+        throw new Exception('never get to this Result::tel');
+    }
+
+    /**
+     * @param Tel
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTel(Tel $value): bool {
+        Tel::to($value);
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Tel
+     */
+    public function getTel(): Tel {
+        if (Result::validateTel($this->tel))  {
+            return $this->tel;
+        }
+        throw new Exception('never get to getTel Result::tel');
+    }
+
+    /**
+     * @return Tel
+     */
+    public static function sampleTel(): Tel {
+        return Tel::sample(); /*enum*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromThai(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toThai(): string {
+        if (Result::validateThai($this->thai))  {
+            return $this->thai; /*string*/
+        }
+        throw new Exception('never get to this Result::thai');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThai(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getThai(): string {
+        if (Result::validateThai($this->thai))  {
+            return $this->thai;
+        }
+        throw new Exception('never get to getThai Result::thai');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleThai(): string {
+        return 'Result::thai::41'; /*41:thai*/
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTodayScreens(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTodayScreens(): int {
+        if (Result::validateTodayScreens($this->todayScreens))  {
+            return $this->todayScreens; /*int*/
+        }
+        throw new Exception('never get to this Result::todayScreens');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTodayScreens(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTodayScreens(): int {
+        if (Result::validateTodayScreens($this->todayScreens))  {
+            return $this->todayScreens;
+        }
+        throw new Exception('never get to getTodayScreens Result::todayScreens');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTodayScreens(): int {
+        return 42; /*42:todayScreens*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromURL(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toURL(): string {
+        if (Result::validateURL($this->url))  {
+            return $this->url; /*string*/
+        }
+        throw new Exception('never get to this Result::url');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateURL(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getURL(): string {
+        if (Result::validateURL($this->url))  {
+            return $this->url;
+        }
+        throw new Exception('never get to getURL Result::url');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleURL(): string {
+        return 'Result::url::43'; /*43:url*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromWebsite(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toWebsite(): string {
+        if (Result::validateWebsite($this->website))  {
+            return $this->website; /*string*/
+        }
+        throw new Exception('never get to this Result::website');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWebsite(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getWebsite(): string {
+        if (Result::validateWebsite($this->website))  {
+            return $this->website;
+        }
+        throw new Exception('never get to getWebsite Result::website');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleWebsite(): string {
+        return 'Result::website::44'; /*44:website*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Result::validateCode($this->code)
+        || Result::validateEnglish($this->english)
+        || Result::validateFav($this->fav)
+        || Result::validateGroup($this->group)
+        || Result::validateLocation($this->location)
+        || Result::validateMinScreens($this->minScreens)
+        || Result::validateNumViews($this->numViews)
+        || Result::validateShowtimes($this->showtimes)
+        || Result::validateStars($this->stars)
+        || Result::validateTel($this->tel)
+        || Result::validateThai($this->thai)
+        || Result::validateTodayScreens($this->todayScreens)
+        || Result::validateURL($this->url)
+        || Result::validateWebsite($this->website);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'code'} = $this->toCode();
+        $out->{'english'} = $this->toEnglish();
+        $out->{'fav'} = $this->toFav();
+        $out->{'group'} = $this->toGroup();
+        $out->{'location'} = $this->toLocation();
+        $out->{'min_screens'} = $this->toMinScreens();
+        $out->{'num_views'} = $this->toNumViews();
+        $out->{'showtimes'} = $this->toShowtimes();
+        $out->{'stars'} = $this->toStars();
+        $out->{'tel'} = $this->toTel();
+        $out->{'thai'} = $this->toThai();
+        $out->{'today_screens'} = $this->toTodayScreens();
+        $out->{'url'} = $this->toURL();
+        $out->{'website'} = $this->toWebsite();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Result
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Result {
+        return new Result(
+         Result::fromCode($obj->{'code'})
+        ,Result::fromEnglish($obj->{'english'})
+        ,Result::fromFav($obj->{'fav'})
+        ,Result::fromGroup($obj->{'group'})
+        ,Result::fromLocation($obj->{'location'})
+        ,Result::fromMinScreens($obj->{'min_screens'})
+        ,Result::fromNumViews($obj->{'num_views'})
+        ,Result::fromShowtimes($obj->{'showtimes'})
+        ,Result::fromStars($obj->{'stars'})
+        ,Result::fromTel($obj->{'tel'})
+        ,Result::fromThai($obj->{'thai'})
+        ,Result::fromTodayScreens($obj->{'today_screens'})
+        ,Result::fromURL($obj->{'url'})
+        ,Result::fromWebsite($obj->{'website'})
+        );
+    }
+
+    /**
+     * @return Result
+     */
+    public static function sample(): Result {
+        return new Result(
+         Result::sampleCode()
+        ,Result::sampleEnglish()
+        ,Result::sampleFav()
+        ,Result::sampleGroup()
+        ,Result::sampleLocation()
+        ,Result::sampleMinScreens()
+        ,Result::sampleNumViews()
+        ,Result::sampleShowtimes()
+        ,Result::sampleStars()
+        ,Result::sampleTel()
+        ,Result::sampleThai()
+        ,Result::sampleTodayScreens()
+        ,Result::sampleURL()
+        ,Result::sampleWebsite()
+        );
+    }
+}
+
+// This is an autogenerated file:Group
+
+class Group {
+    private Code $code; // json:code Required
+    private English $english; // json:english Required
+    private Thai $thai; // json:thai Required
+    private string $website; // json:website Required
+
+    /**
+     * @param Code $code
+     * @param English $english
+     * @param Thai $thai
+     * @param string $website
+     */
+    public function __construct(Code $code, English $english, Thai $thai, string $website) {
+        $this->code = $code;
+        $this->english = $english;
+        $this->thai = $thai;
+        $this->website = $website;
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return Code
+     */
+    public static function fromCode(string $value): Code {
+        return Code::from($value); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toCode(): string {
+        if (Group::validateCode($this->code))  {
+            return Code::to($this->code); /*enum*/
+        }
+        throw new Exception('never get to this Group::code');
+    }
+
+    /**
+     * @param Code
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCode(Code $value): bool {
+        Code::to($value);
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Code
+     */
+    public function getCode(): Code {
+        if (Group::validateCode($this->code))  {
+            return $this->code;
+        }
+        throw new Exception('never get to getCode Group::code');
+    }
+
+    /**
+     * @return Code
+     */
+    public static function sampleCode(): Code {
+        return Code::sample(); /*enum*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return English
+     */
+    public static function fromEnglish(string $value): English {
+        return English::from($value); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toEnglish(): string {
+        if (Group::validateEnglish($this->english))  {
+            return English::to($this->english); /*enum*/
+        }
+        throw new Exception('never get to this Group::english');
+    }
+
+    /**
+     * @param English
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEnglish(English $value): bool {
+        English::to($value);
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return English
+     */
+    public function getEnglish(): English {
+        if (Group::validateEnglish($this->english))  {
+            return $this->english;
+        }
+        throw new Exception('never get to getEnglish Group::english');
+    }
+
+    /**
+     * @return English
+     */
+    public static function sampleEnglish(): English {
+        return English::sample(); /*enum*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return Thai
+     */
+    public static function fromThai(string $value): Thai {
+        return Thai::from($value); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toThai(): string {
+        if (Group::validateThai($this->thai))  {
+            return Thai::to($this->thai); /*enum*/
+        }
+        throw new Exception('never get to this Group::thai');
+    }
+
+    /**
+     * @param Thai
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThai(Thai $value): bool {
+        Thai::to($value);
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Thai
+     */
+    public function getThai(): Thai {
+        if (Group::validateThai($this->thai))  {
+            return $this->thai;
+        }
+        throw new Exception('never get to getThai Group::thai');
+    }
+
+    /**
+     * @return Thai
+     */
+    public static function sampleThai(): Thai {
+        return Thai::sample(); /*enum*/
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return string
+     */
+    public static function fromWebsite(string $value): string {
+        return $value; /*string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toWebsite(): string {
+        if (Group::validateWebsite($this->website))  {
+            return $this->website; /*string*/
+        }
+        throw new Exception('never get to this Group::website');
+    }
+
+    /**
+     * @param string
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWebsite(string $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function getWebsite(): string {
+        if (Group::validateWebsite($this->website))  {
+            return $this->website;
+        }
+        throw new Exception('never get to getWebsite Group::website');
+    }
+
+    /**
+     * @return string
+     */
+    public static function sampleWebsite(): string {
+        return 'Group::website::34'; /*34:website*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Group::validateCode($this->code)
+        || Group::validateEnglish($this->english)
+        || Group::validateThai($this->thai)
+        || Group::validateWebsite($this->website);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'code'} = $this->toCode();
+        $out->{'english'} = $this->toEnglish();
+        $out->{'thai'} = $this->toThai();
+        $out->{'website'} = $this->toWebsite();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Group
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Group {
+        return new Group(
+         Group::fromCode($obj->{'code'})
+        ,Group::fromEnglish($obj->{'english'})
+        ,Group::fromThai($obj->{'thai'})
+        ,Group::fromWebsite($obj->{'website'})
+        );
+    }
+
+    /**
+     * @return Group
+     */
+    public static function sample(): Group {
+        return new Group(
+         Group::sampleCode()
+        ,Group::sampleEnglish()
+        ,Group::sampleThai()
+        ,Group::sampleWebsite()
+        );
+    }
+}
+
+// This is an autogenerated file:Code
+
+class Code {
+    public static Code $SF;
+    public static function init() {
+        Code::$SF = new Code('sf');
+    }
+    private string $enum;
+    public function __construct(string $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param Code
+     * @return string
+     * @throws Exception
+     */
+    public static function to(Code $obj): string {
+        switch ($obj->enum) {
+            case Code::$SF->enum: return 'sf';
+        }
+        throw new Exception('the give value is not an enum-value.');
+    }
+
+    /**
+     * @param mixed
+     * @return Code
+     * @throws Exception
+     */
+    public static function from($obj): Code {
+        switch ($obj) {
+            case 'sf': return Code::$SF;
+        }
+        throw new Exception("Cannot deserialize Code");
+    }
+
+    /**
+     * @return Code
+     */
+    public static function sample(): Code {
+        return Code::$SF;
+    }
+}
+Code::init();
+
+// This is an autogenerated file:English
+
+class English {
+    public static English $SF;
+    public static function init() {
+        English::$SF = new English('SF');
+    }
+    private string $enum;
+    public function __construct(string $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param English
+     * @return string
+     * @throws Exception
+     */
+    public static function to(English $obj): string {
+        switch ($obj->enum) {
+            case English::$SF->enum: return 'SF';
+        }
+        throw new Exception('the give value is not an enum-value.');
+    }
+
+    /**
+     * @param mixed
+     * @return English
+     * @throws Exception
+     */
+    public static function from($obj): English {
+        switch ($obj) {
+            case 'SF': return English::$SF;
+        }
+        throw new Exception("Cannot deserialize English");
+    }
+
+    /**
+     * @return English
+     */
+    public static function sample(): English {
+        return English::$SF;
+    }
+}
+English::init();
+
+// This is an autogenerated file:Thai
+
+class Thai {
+    public static Thai $EMPTY;
+    public static function init() {
+        Thai::$EMPTY = new Thai('เอสเอฟ');
+    }
+    private string $enum;
+    public function __construct(string $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param Thai
+     * @return string
+     * @throws Exception
+     */
+    public static function to(Thai $obj): string {
+        switch ($obj->enum) {
+            case Thai::$EMPTY->enum: return 'เอสเอฟ';
+        }
+        throw new Exception('the give value is not an enum-value.');
+    }
+
+    /**
+     * @param mixed
+     * @return Thai
+     * @throws Exception
+     */
+    public static function from($obj): Thai {
+        switch ($obj) {
+            case 'เอสเอฟ': return Thai::$EMPTY;
+        }
+        throw new Exception("Cannot deserialize Thai");
+    }
+
+    /**
+     * @return Thai
+     */
+    public static function sample(): Thai {
+        return Thai::$EMPTY;
+    }
+}
+Thai::init();
+
+// This is an autogenerated file:Location
+
+class Location {
+    public static Location $EMPTY;
+    public static Location $THE_5_TH_FL_EMPORIUM;
+    public static function init() {
+        Location::$EMPTY = new Location('');
+        Location::$THE_5_TH_FL_EMPORIUM = new Location('5th Fl. Emporium');
+    }
+    private string $enum;
+    public function __construct(string $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param Location
+     * @return string
+     * @throws Exception
+     */
+    public static function to(Location $obj): string {
+        switch ($obj->enum) {
+            case Location::$EMPTY->enum: return '';
+            case Location::$THE_5_TH_FL_EMPORIUM->enum: return '5th Fl. Emporium';
+        }
+        throw new Exception('the give value is not an enum-value.');
+    }
+
+    /**
+     * @param mixed
+     * @return Location
+     * @throws Exception
+     */
+    public static function from($obj): Location {
+        switch ($obj) {
+            case '': return Location::$EMPTY;
+            case '5th Fl. Emporium': return Location::$THE_5_TH_FL_EMPORIUM;
+        }
+        throw new Exception("Cannot deserialize Location");
+    }
+
+    /**
+     * @return Location
+     */
+    public static function sample(): Location {
+        return Location::$EMPTY;
+    }
+}
+Location::init();
+
+// This is an autogenerated file:Tel
+
+class Tel {
+    public static Tel $EMPTY;
+    public static Tel $THE_022688899;
+    public static function init() {
+        Tel::$EMPTY = new Tel('');
+        Tel::$THE_022688899 = new Tel('02-268-8899');
+    }
+    private string $enum;
+    public function __construct(string $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param Tel
+     * @return string
+     * @throws Exception
+     */
+    public static function to(Tel $obj): string {
+        switch ($obj->enum) {
+            case Tel::$EMPTY->enum: return '';
+            case Tel::$THE_022688899->enum: return '02-268-8899';
+        }
+        throw new Exception('the give value is not an enum-value.');
+    }
+
+    /**
+     * @param mixed
+     * @return Tel
+     * @throws Exception
+     */
+    public static function from($obj): Tel {
+        switch ($obj) {
+            case '': return Tel::$EMPTY;
+            case '02-268-8899': return Tel::$THE_022688899;
+        }
+        throw new Exception("Cannot deserialize Tel");
+    }
+
+    /**
+     * @return Tel
+     */
+    public static function sample(): Tel {
+        return Tel::$EMPTY;
+    }
+}
+Tel::init();
diff --git a/head/php/test/inputs/json/priority/keywords.json/default/TopLevel.php b/head/php/test/inputs/json/priority/keywords.json/default/TopLevel.php
new file mode 100644
index 0000000..fae0234
--- /dev/null
+++ b/head/php/test/inputs/json/priority/keywords.json/default/TopLevel.php
@@ -0,0 +1,43552 @@
+<?php
+declare(strict_types=1);
+
+// This is an autogenerated file:TopLevel
+
+class TopLevel {
+    private int $dummy; // json:dummy Required
+    private Obj1 $obj1; // json:obj1 Required
+    private Obj2 $obj2; // json:obj2 Required
+    private Obj3 $obj3; // json:obj3 Required
+    private Obj4 $obj4; // json:obj4 Required
+    private Obj5 $obj5; // json:obj5 Required
+
+    /**
+     * @param int $dummy
+     * @param Obj1 $obj1
+     * @param Obj2 $obj2
+     * @param Obj3 $obj3
+     * @param Obj4 $obj4
+     * @param Obj5 $obj5
+     */
+    public function __construct(int $dummy, Obj1 $obj1, Obj2 $obj2, Obj3 $obj3, Obj4 $obj4, Obj5 $obj5) {
+        $this->dummy = $dummy;
+        $this->obj1 = $obj1;
+        $this->obj2 = $obj2;
+        $this->obj3 = $obj3;
+        $this->obj4 = $obj4;
+        $this->obj5 = $obj5;
+    }
+
+    /**
+     * @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 (TopLevel::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this TopLevel::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 (TopLevel::validateDummy($this->dummy))  {
+            return $this->dummy;
+        }
+        throw new Exception('never get to getDummy TopLevel::dummy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj1
+     */
+    public static function fromObj1(stdClass $value): Obj1 {
+        return Obj1::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj1(): stdClass {
+        if (TopLevel::validateObj1($this->obj1))  {
+            return $this->obj1->to(); /*class*/
+        }
+        throw new Exception('never get to this TopLevel::obj1');
+    }
+
+    /**
+     * @param Obj1
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj1(Obj1 $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj1
+     */
+    public function getObj1(): Obj1 {
+        if (TopLevel::validateObj1($this->obj1))  {
+            return $this->obj1;
+        }
+        throw new Exception('never get to getObj1 TopLevel::obj1');
+    }
+
+    /**
+     * @return Obj1
+     */
+    public static function sampleObj1(): Obj1 {
+        return Obj1::sample(); /*32:obj1*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj2
+     */
+    public static function fromObj2(stdClass $value): Obj2 {
+        return Obj2::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj2(): stdClass {
+        if (TopLevel::validateObj2($this->obj2))  {
+            return $this->obj2->to(); /*class*/
+        }
+        throw new Exception('never get to this TopLevel::obj2');
+    }
+
+    /**
+     * @param Obj2
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj2(Obj2 $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj2
+     */
+    public function getObj2(): Obj2 {
+        if (TopLevel::validateObj2($this->obj2))  {
+            return $this->obj2;
+        }
+        throw new Exception('never get to getObj2 TopLevel::obj2');
+    }
+
+    /**
+     * @return Obj2
+     */
+    public static function sampleObj2(): Obj2 {
+        return Obj2::sample(); /*33:obj2*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj3
+     */
+    public static function fromObj3(stdClass $value): Obj3 {
+        return Obj3::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj3(): stdClass {
+        if (TopLevel::validateObj3($this->obj3))  {
+            return $this->obj3->to(); /*class*/
+        }
+        throw new Exception('never get to this TopLevel::obj3');
+    }
+
+    /**
+     * @param Obj3
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj3(Obj3 $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj3
+     */
+    public function getObj3(): Obj3 {
+        if (TopLevel::validateObj3($this->obj3))  {
+            return $this->obj3;
+        }
+        throw new Exception('never get to getObj3 TopLevel::obj3');
+    }
+
+    /**
+     * @return Obj3
+     */
+    public static function sampleObj3(): Obj3 {
+        return Obj3::sample(); /*34:obj3*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj4
+     */
+    public static function fromObj4(stdClass $value): Obj4 {
+        return Obj4::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj4(): stdClass {
+        if (TopLevel::validateObj4($this->obj4))  {
+            return $this->obj4->to(); /*class*/
+        }
+        throw new Exception('never get to this TopLevel::obj4');
+    }
+
+    /**
+     * @param Obj4
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj4(Obj4 $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj4
+     */
+    public function getObj4(): Obj4 {
+        if (TopLevel::validateObj4($this->obj4))  {
+            return $this->obj4;
+        }
+        throw new Exception('never get to getObj4 TopLevel::obj4');
+    }
+
+    /**
+     * @return Obj4
+     */
+    public static function sampleObj4(): Obj4 {
+        return Obj4::sample(); /*35:obj4*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj5
+     */
+    public static function fromObj5(stdClass $value): Obj5 {
+        return Obj5::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj5(): stdClass {
+        if (TopLevel::validateObj5($this->obj5))  {
+            return $this->obj5->to(); /*class*/
+        }
+        throw new Exception('never get to this TopLevel::obj5');
+    }
+
+    /**
+     * @param Obj5
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj5(Obj5 $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj5
+     */
+    public function getObj5(): Obj5 {
+        if (TopLevel::validateObj5($this->obj5))  {
+            return $this->obj5;
+        }
+        throw new Exception('never get to getObj5 TopLevel::obj5');
+    }
+
+    /**
+     * @return Obj5
+     */
+    public static function sampleObj5(): Obj5 {
+        return Obj5::sample(); /*36:obj5*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TopLevel::validateDummy($this->dummy)
+        || TopLevel::validateObj1($this->obj1)
+        || TopLevel::validateObj2($this->obj2)
+        || TopLevel::validateObj3($this->obj3)
+        || TopLevel::validateObj4($this->obj4)
+        || TopLevel::validateObj5($this->obj5);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'obj1'} = $this->toObj1();
+        $out->{'obj2'} = $this->toObj2();
+        $out->{'obj3'} = $this->toObj3();
+        $out->{'obj4'} = $this->toObj4();
+        $out->{'obj5'} = $this->toObj5();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TopLevel
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TopLevel {
+        return new TopLevel(
+         TopLevel::fromDummy($obj->{'dummy'})
+        ,TopLevel::fromObj1($obj->{'obj1'})
+        ,TopLevel::fromObj2($obj->{'obj2'})
+        ,TopLevel::fromObj3($obj->{'obj3'})
+        ,TopLevel::fromObj4($obj->{'obj4'})
+        ,TopLevel::fromObj5($obj->{'obj5'})
+        );
+    }
+
+    /**
+     * @return TopLevel
+     */
+    public static function sample(): TopLevel {
+        return new TopLevel(
+         TopLevel::sampleDummy()
+        ,TopLevel::sampleObj1()
+        ,TopLevel::sampleObj2()
+        ,TopLevel::sampleObj3()
+        ,TopLevel::sampleObj4()
+        ,TopLevel::sampleObj5()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj1
+
+class Obj1 {
+    private AbstractClass $abstract; // json:abstract Required
+    private Alignas $alignas; // json:alignas Required
+    private Alignof $alignof; // json:alignof Required
+    private AndClass $and; // json:and Required
+    private AndEq $andEq; // json:and_eq Required
+    private Any $any; // json:Any Required
+    private ArrayClass $array; // json:array Required
+    private AsClass $as; // json:as Required
+    private ASM $asm; // json:asm Required
+    private Assert $assert; // json:assert Required
+    private Associatedtype $associatedtype; // json:associatedtype Required
+    private Associativity $associativity; // json:associativity Required
+    private Async $async; // json:async Required
+    private Atomic $atomic; // json:atomic Required
+    private AtomicCancel $atomicCancel; // json:atomic_cancel Required
+    private AtomicCommit $atomicCommit; // json:atomic_commit Required
+    private AtomicNoexcept $atomicNoexcept; // json:atomic_noexcept Required
+    private Auto $auto; // json:auto Required
+    private Await $await; // json:await Required
+    private Base $base; // json:base Required
+    private Bitand $bitand; // json:bitand Required
+    private Bitor $bitor; // json:bitor Required
+    private BOOLClass $bool; // json:BOOL Required
+    private Boolean $boolean; // json:boolean Required
+    private BreakClass $break; // json:break Required
+    private Bycopy $bycopy; // json:bycopy Required
+    private Byref $byref; // json:byref Required
+    private Byte $byte; // json:byte Required
+    private CaseClass $case; // json:case Required
+    private CatchClass $catch; // json:catch Required
+    private Chan $chan; // json:chan Required
+    private Char $char; // json:char Required
+    private Char16T $char16T; // json:char16_t Required
+    private Char32T $char32T; // json:char32_t Required
+    private Checked $checked; // json:checked Required
+    private ClassClass $class; // json:Class Required
+    private CloneClass $clone; // json:clone Required
+    private CoAwait $coAwait; // json:co_await Required
+    private CoReturn $coReturn; // json:co_return Required
+    private CoYield $coYield; // json:co_yield Required
+    private Compl $compl; // json:compl Required
+    private Complex $complex; // json:_Complex Required
+    private Concept $concept; // json:concept Required
+    private Console $console; // json:console Required
+    private ConstClass $const; // json:const Required
+    private ConstCast $constCast; // json:const_cast Required
+    private Constexpr $constexpr; // json:constexpr Required
+    private Constructor $constructor; // json:constructor Required
+    private ContinueClass $continue; // json:continue Required
+    private Convenience $convenience; // json:convenience Required
+    private Convert $convert; // json:convert Required
+    private ConverterClass $converter; // json:converter Required
+    private Date $date; // json:date Required
+    private DateParseHandling $dateParseHandling; // json:date_parse_handling Required
+    private Debugger $debugger; // json:debugger Required
+    private Decimal $decimal; // json:decimal Required
+    private DeclareClass $declare; // json:declare Required
+    private Decltype $decltype; // json:decltype Required
+    private DecodeString $decodeString; // json:decode_string Required
+    private int $dummy; // json:dummy Required
+    private Purple $empty; // json:_ Required
+    private Imaginery $imaginery; // json:_Imaginery Required
+    private AnyClass $obj1Any; // json:any Required
+    private Obj1Bool $obj1Bool; // json:_Bool Required
+    private Obj1Class $obj1Class; // json:class Required
+    private Obj1BoolClass $purpleBool; // json:bool Required
+
+    /**
+     * @param AbstractClass $abstract
+     * @param Alignas $alignas
+     * @param Alignof $alignof
+     * @param AndClass $and
+     * @param AndEq $andEq
+     * @param Any $any
+     * @param ArrayClass $array
+     * @param AsClass $as
+     * @param ASM $asm
+     * @param Assert $assert
+     * @param Associatedtype $associatedtype
+     * @param Associativity $associativity
+     * @param Async $async
+     * @param Atomic $atomic
+     * @param AtomicCancel $atomicCancel
+     * @param AtomicCommit $atomicCommit
+     * @param AtomicNoexcept $atomicNoexcept
+     * @param Auto $auto
+     * @param Await $await
+     * @param Base $base
+     * @param Bitand $bitand
+     * @param Bitor $bitor
+     * @param BOOLClass $bool
+     * @param Boolean $boolean
+     * @param BreakClass $break
+     * @param Bycopy $bycopy
+     * @param Byref $byref
+     * @param Byte $byte
+     * @param CaseClass $case
+     * @param CatchClass $catch
+     * @param Chan $chan
+     * @param Char $char
+     * @param Char16T $char16T
+     * @param Char32T $char32T
+     * @param Checked $checked
+     * @param ClassClass $class
+     * @param CloneClass $clone
+     * @param CoAwait $coAwait
+     * @param CoReturn $coReturn
+     * @param CoYield $coYield
+     * @param Compl $compl
+     * @param Complex $complex
+     * @param Concept $concept
+     * @param Console $console
+     * @param ConstClass $const
+     * @param ConstCast $constCast
+     * @param Constexpr $constexpr
+     * @param Constructor $constructor
+     * @param ContinueClass $continue
+     * @param Convenience $convenience
+     * @param Convert $convert
+     * @param ConverterClass $converter
+     * @param Date $date
+     * @param DateParseHandling $dateParseHandling
+     * @param Debugger $debugger
+     * @param Decimal $decimal
+     * @param DeclareClass $declare
+     * @param Decltype $decltype
+     * @param DecodeString $decodeString
+     * @param int $dummy
+     * @param Purple $empty
+     * @param Imaginery $imaginery
+     * @param AnyClass $obj1Any
+     * @param Obj1Bool $obj1Bool
+     * @param Obj1Class $obj1Class
+     * @param Obj1BoolClass $purpleBool
+     */
+    public function __construct(AbstractClass $abstract, Alignas $alignas, Alignof $alignof, AndClass $and, AndEq $andEq, Any $any, ArrayClass $array, AsClass $as, ASM $asm, Assert $assert, Associatedtype $associatedtype, Associativity $associativity, Async $async, Atomic $atomic, AtomicCancel $atomicCancel, AtomicCommit $atomicCommit, AtomicNoexcept $atomicNoexcept, Auto $auto, Await $await, Base $base, Bitand $bitand, Bitor $bitor, BOOLClass $bool, Boolean $boolean, BreakClass $break, Bycopy $bycopy, Byref $byref, Byte $byte, CaseClass $case, CatchClass $catch, Chan $chan, Char $char, Char16T $char16T, Char32T $char32T, Checked $checked, ClassClass $class, CloneClass $clone, CoAwait $coAwait, CoReturn $coReturn, CoYield $coYield, Compl $compl, Complex $complex, Concept $concept, Console $console, ConstClass $const, ConstCast $constCast, Constexpr $constexpr, Constructor $constructor, ContinueClass $continue, Convenience $convenience, Convert $convert, ConverterClass $converter, Date $date, DateParseHandling $dateParseHandling, Debugger $debugger, Decimal $decimal, DeclareClass $declare, Decltype $decltype, DecodeString $decodeString, int $dummy, Purple $empty, Imaginery $imaginery, AnyClass $obj1Any, Obj1Bool $obj1Bool, Obj1Class $obj1Class, Obj1BoolClass $purpleBool) {
+        $this->abstract = $abstract;
+        $this->alignas = $alignas;
+        $this->alignof = $alignof;
+        $this->and = $and;
+        $this->andEq = $andEq;
+        $this->any = $any;
+        $this->array = $array;
+        $this->as = $as;
+        $this->asm = $asm;
+        $this->assert = $assert;
+        $this->associatedtype = $associatedtype;
+        $this->associativity = $associativity;
+        $this->async = $async;
+        $this->atomic = $atomic;
+        $this->atomicCancel = $atomicCancel;
+        $this->atomicCommit = $atomicCommit;
+        $this->atomicNoexcept = $atomicNoexcept;
+        $this->auto = $auto;
+        $this->await = $await;
+        $this->base = $base;
+        $this->bitand = $bitand;
+        $this->bitor = $bitor;
+        $this->bool = $bool;
+        $this->boolean = $boolean;
+        $this->break = $break;
+        $this->bycopy = $bycopy;
+        $this->byref = $byref;
+        $this->byte = $byte;
+        $this->case = $case;
+        $this->catch = $catch;
+        $this->chan = $chan;
+        $this->char = $char;
+        $this->char16T = $char16T;
+        $this->char32T = $char32T;
+        $this->checked = $checked;
+        $this->class = $class;
+        $this->clone = $clone;
+        $this->coAwait = $coAwait;
+        $this->coReturn = $coReturn;
+        $this->coYield = $coYield;
+        $this->compl = $compl;
+        $this->complex = $complex;
+        $this->concept = $concept;
+        $this->console = $console;
+        $this->const = $const;
+        $this->constCast = $constCast;
+        $this->constexpr = $constexpr;
+        $this->constructor = $constructor;
+        $this->continue = $continue;
+        $this->convenience = $convenience;
+        $this->convert = $convert;
+        $this->converter = $converter;
+        $this->date = $date;
+        $this->dateParseHandling = $dateParseHandling;
+        $this->debugger = $debugger;
+        $this->decimal = $decimal;
+        $this->declare = $declare;
+        $this->decltype = $decltype;
+        $this->decodeString = $decodeString;
+        $this->dummy = $dummy;
+        $this->empty = $empty;
+        $this->imaginery = $imaginery;
+        $this->obj1Any = $obj1Any;
+        $this->obj1Bool = $obj1Bool;
+        $this->obj1Class = $obj1Class;
+        $this->purpleBool = $purpleBool;
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AbstractClass
+     */
+    public static function fromAbstract(stdClass $value): AbstractClass {
+        return AbstractClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAbstract(): stdClass {
+        if (Obj1::validateAbstract($this->abstract))  {
+            return $this->abstract->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::abstract');
+    }
+
+    /**
+     * @param AbstractClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAbstract(AbstractClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AbstractClass
+     */
+    public function getAbstract(): AbstractClass {
+        if (Obj1::validateAbstract($this->abstract))  {
+            return $this->abstract;
+        }
+        throw new Exception('never get to getAbstract Obj1::abstract');
+    }
+
+    /**
+     * @return AbstractClass
+     */
+    public static function sampleAbstract(): AbstractClass {
+        return AbstractClass::sample(); /*31:abstract*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Alignas
+     */
+    public static function fromAlignas(stdClass $value): Alignas {
+        return Alignas::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAlignas(): stdClass {
+        if (Obj1::validateAlignas($this->alignas))  {
+            return $this->alignas->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::alignas');
+    }
+
+    /**
+     * @param Alignas
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAlignas(Alignas $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Alignas
+     */
+    public function getAlignas(): Alignas {
+        if (Obj1::validateAlignas($this->alignas))  {
+            return $this->alignas;
+        }
+        throw new Exception('never get to getAlignas Obj1::alignas');
+    }
+
+    /**
+     * @return Alignas
+     */
+    public static function sampleAlignas(): Alignas {
+        return Alignas::sample(); /*32:alignas*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Alignof
+     */
+    public static function fromAlignof(stdClass $value): Alignof {
+        return Alignof::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAlignof(): stdClass {
+        if (Obj1::validateAlignof($this->alignof))  {
+            return $this->alignof->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::alignof');
+    }
+
+    /**
+     * @param Alignof
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAlignof(Alignof $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Alignof
+     */
+    public function getAlignof(): Alignof {
+        if (Obj1::validateAlignof($this->alignof))  {
+            return $this->alignof;
+        }
+        throw new Exception('never get to getAlignof Obj1::alignof');
+    }
+
+    /**
+     * @return Alignof
+     */
+    public static function sampleAlignof(): Alignof {
+        return Alignof::sample(); /*33:alignof*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AndClass
+     */
+    public static function fromAnd(stdClass $value): AndClass {
+        return AndClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAnd(): stdClass {
+        if (Obj1::validateAnd($this->and))  {
+            return $this->and->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::and');
+    }
+
+    /**
+     * @param AndClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAnd(AndClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AndClass
+     */
+    public function getAnd(): AndClass {
+        if (Obj1::validateAnd($this->and))  {
+            return $this->and;
+        }
+        throw new Exception('never get to getAnd Obj1::and');
+    }
+
+    /**
+     * @return AndClass
+     */
+    public static function sampleAnd(): AndClass {
+        return AndClass::sample(); /*34:and*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AndEq
+     */
+    public static function fromAndEq(stdClass $value): AndEq {
+        return AndEq::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAndEq(): stdClass {
+        if (Obj1::validateAndEq($this->andEq))  {
+            return $this->andEq->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::andEq');
+    }
+
+    /**
+     * @param AndEq
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAndEq(AndEq $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AndEq
+     */
+    public function getAndEq(): AndEq {
+        if (Obj1::validateAndEq($this->andEq))  {
+            return $this->andEq;
+        }
+        throw new Exception('never get to getAndEq Obj1::andEq');
+    }
+
+    /**
+     * @return AndEq
+     */
+    public static function sampleAndEq(): AndEq {
+        return AndEq::sample(); /*35:andEq*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Any
+     */
+    public static function fromAny(stdClass $value): Any {
+        return Any::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAny(): stdClass {
+        if (Obj1::validateAny($this->any))  {
+            return $this->any->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::any');
+    }
+
+    /**
+     * @param Any
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAny(Any $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Any
+     */
+    public function getAny(): Any {
+        if (Obj1::validateAny($this->any))  {
+            return $this->any;
+        }
+        throw new Exception('never get to getAny Obj1::any');
+    }
+
+    /**
+     * @return Any
+     */
+    public static function sampleAny(): Any {
+        return Any::sample(); /*36:any*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ArrayClass
+     */
+    public static function fromArray(stdClass $value): ArrayClass {
+        return ArrayClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toArray(): stdClass {
+        if (Obj1::validateArray($this->array))  {
+            return $this->array->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::array');
+    }
+
+    /**
+     * @param ArrayClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateArray(ArrayClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ArrayClass
+     */
+    public function getArray(): ArrayClass {
+        if (Obj1::validateArray($this->array))  {
+            return $this->array;
+        }
+        throw new Exception('never get to getArray Obj1::array');
+    }
+
+    /**
+     * @return ArrayClass
+     */
+    public static function sampleArray(): ArrayClass {
+        return ArrayClass::sample(); /*37:array*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AsClass
+     */
+    public static function fromAs(stdClass $value): AsClass {
+        return AsClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAs(): stdClass {
+        if (Obj1::validateAs($this->as))  {
+            return $this->as->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::as');
+    }
+
+    /**
+     * @param AsClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAs(AsClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AsClass
+     */
+    public function getAs(): AsClass {
+        if (Obj1::validateAs($this->as))  {
+            return $this->as;
+        }
+        throw new Exception('never get to getAs Obj1::as');
+    }
+
+    /**
+     * @return AsClass
+     */
+    public static function sampleAs(): AsClass {
+        return AsClass::sample(); /*38:as*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ASM
+     */
+    public static function fromASM(stdClass $value): ASM {
+        return ASM::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toASM(): stdClass {
+        if (Obj1::validateASM($this->asm))  {
+            return $this->asm->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::asm');
+    }
+
+    /**
+     * @param ASM
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateASM(ASM $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ASM
+     */
+    public function getASM(): ASM {
+        if (Obj1::validateASM($this->asm))  {
+            return $this->asm;
+        }
+        throw new Exception('never get to getASM Obj1::asm');
+    }
+
+    /**
+     * @return ASM
+     */
+    public static function sampleASM(): ASM {
+        return ASM::sample(); /*39:asm*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Assert
+     */
+    public static function fromAssert(stdClass $value): Assert {
+        return Assert::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAssert(): stdClass {
+        if (Obj1::validateAssert($this->assert))  {
+            return $this->assert->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::assert');
+    }
+
+    /**
+     * @param Assert
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAssert(Assert $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Assert
+     */
+    public function getAssert(): Assert {
+        if (Obj1::validateAssert($this->assert))  {
+            return $this->assert;
+        }
+        throw new Exception('never get to getAssert Obj1::assert');
+    }
+
+    /**
+     * @return Assert
+     */
+    public static function sampleAssert(): Assert {
+        return Assert::sample(); /*40:assert*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Associatedtype
+     */
+    public static function fromAssociatedtype(stdClass $value): Associatedtype {
+        return Associatedtype::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAssociatedtype(): stdClass {
+        if (Obj1::validateAssociatedtype($this->associatedtype))  {
+            return $this->associatedtype->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::associatedtype');
+    }
+
+    /**
+     * @param Associatedtype
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAssociatedtype(Associatedtype $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Associatedtype
+     */
+    public function getAssociatedtype(): Associatedtype {
+        if (Obj1::validateAssociatedtype($this->associatedtype))  {
+            return $this->associatedtype;
+        }
+        throw new Exception('never get to getAssociatedtype Obj1::associatedtype');
+    }
+
+    /**
+     * @return Associatedtype
+     */
+    public static function sampleAssociatedtype(): Associatedtype {
+        return Associatedtype::sample(); /*41:associatedtype*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Associativity
+     */
+    public static function fromAssociativity(stdClass $value): Associativity {
+        return Associativity::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAssociativity(): stdClass {
+        if (Obj1::validateAssociativity($this->associativity))  {
+            return $this->associativity->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::associativity');
+    }
+
+    /**
+     * @param Associativity
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAssociativity(Associativity $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Associativity
+     */
+    public function getAssociativity(): Associativity {
+        if (Obj1::validateAssociativity($this->associativity))  {
+            return $this->associativity;
+        }
+        throw new Exception('never get to getAssociativity Obj1::associativity');
+    }
+
+    /**
+     * @return Associativity
+     */
+    public static function sampleAssociativity(): Associativity {
+        return Associativity::sample(); /*42:associativity*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Async
+     */
+    public static function fromAsync(stdClass $value): Async {
+        return Async::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAsync(): stdClass {
+        if (Obj1::validateAsync($this->async))  {
+            return $this->async->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::async');
+    }
+
+    /**
+     * @param Async
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAsync(Async $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Async
+     */
+    public function getAsync(): Async {
+        if (Obj1::validateAsync($this->async))  {
+            return $this->async;
+        }
+        throw new Exception('never get to getAsync Obj1::async');
+    }
+
+    /**
+     * @return Async
+     */
+    public static function sampleAsync(): Async {
+        return Async::sample(); /*43:async*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Atomic
+     */
+    public static function fromAtomic(stdClass $value): Atomic {
+        return Atomic::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAtomic(): stdClass {
+        if (Obj1::validateAtomic($this->atomic))  {
+            return $this->atomic->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::atomic');
+    }
+
+    /**
+     * @param Atomic
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomic(Atomic $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Atomic
+     */
+    public function getAtomic(): Atomic {
+        if (Obj1::validateAtomic($this->atomic))  {
+            return $this->atomic;
+        }
+        throw new Exception('never get to getAtomic Obj1::atomic');
+    }
+
+    /**
+     * @return Atomic
+     */
+    public static function sampleAtomic(): Atomic {
+        return Atomic::sample(); /*44:atomic*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AtomicCancel
+     */
+    public static function fromAtomicCancel(stdClass $value): AtomicCancel {
+        return AtomicCancel::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAtomicCancel(): stdClass {
+        if (Obj1::validateAtomicCancel($this->atomicCancel))  {
+            return $this->atomicCancel->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::atomicCancel');
+    }
+
+    /**
+     * @param AtomicCancel
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomicCancel(AtomicCancel $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AtomicCancel
+     */
+    public function getAtomicCancel(): AtomicCancel {
+        if (Obj1::validateAtomicCancel($this->atomicCancel))  {
+            return $this->atomicCancel;
+        }
+        throw new Exception('never get to getAtomicCancel Obj1::atomicCancel');
+    }
+
+    /**
+     * @return AtomicCancel
+     */
+    public static function sampleAtomicCancel(): AtomicCancel {
+        return AtomicCancel::sample(); /*45:atomicCancel*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AtomicCommit
+     */
+    public static function fromAtomicCommit(stdClass $value): AtomicCommit {
+        return AtomicCommit::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAtomicCommit(): stdClass {
+        if (Obj1::validateAtomicCommit($this->atomicCommit))  {
+            return $this->atomicCommit->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::atomicCommit');
+    }
+
+    /**
+     * @param AtomicCommit
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomicCommit(AtomicCommit $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AtomicCommit
+     */
+    public function getAtomicCommit(): AtomicCommit {
+        if (Obj1::validateAtomicCommit($this->atomicCommit))  {
+            return $this->atomicCommit;
+        }
+        throw new Exception('never get to getAtomicCommit Obj1::atomicCommit');
+    }
+
+    /**
+     * @return AtomicCommit
+     */
+    public static function sampleAtomicCommit(): AtomicCommit {
+        return AtomicCommit::sample(); /*46:atomicCommit*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AtomicNoexcept
+     */
+    public static function fromAtomicNoexcept(stdClass $value): AtomicNoexcept {
+        return AtomicNoexcept::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAtomicNoexcept(): stdClass {
+        if (Obj1::validateAtomicNoexcept($this->atomicNoexcept))  {
+            return $this->atomicNoexcept->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::atomicNoexcept');
+    }
+
+    /**
+     * @param AtomicNoexcept
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomicNoexcept(AtomicNoexcept $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AtomicNoexcept
+     */
+    public function getAtomicNoexcept(): AtomicNoexcept {
+        if (Obj1::validateAtomicNoexcept($this->atomicNoexcept))  {
+            return $this->atomicNoexcept;
+        }
+        throw new Exception('never get to getAtomicNoexcept Obj1::atomicNoexcept');
+    }
+
+    /**
+     * @return AtomicNoexcept
+     */
+    public static function sampleAtomicNoexcept(): AtomicNoexcept {
+        return AtomicNoexcept::sample(); /*47:atomicNoexcept*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Auto
+     */
+    public static function fromAuto(stdClass $value): Auto {
+        return Auto::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAuto(): stdClass {
+        if (Obj1::validateAuto($this->auto))  {
+            return $this->auto->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::auto');
+    }
+
+    /**
+     * @param Auto
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAuto(Auto $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Auto
+     */
+    public function getAuto(): Auto {
+        if (Obj1::validateAuto($this->auto))  {
+            return $this->auto;
+        }
+        throw new Exception('never get to getAuto Obj1::auto');
+    }
+
+    /**
+     * @return Auto
+     */
+    public static function sampleAuto(): Auto {
+        return Auto::sample(); /*48:auto*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Await
+     */
+    public static function fromAwait(stdClass $value): Await {
+        return Await::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toAwait(): stdClass {
+        if (Obj1::validateAwait($this->await))  {
+            return $this->await->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::await');
+    }
+
+    /**
+     * @param Await
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAwait(Await $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Await
+     */
+    public function getAwait(): Await {
+        if (Obj1::validateAwait($this->await))  {
+            return $this->await;
+        }
+        throw new Exception('never get to getAwait Obj1::await');
+    }
+
+    /**
+     * @return Await
+     */
+    public static function sampleAwait(): Await {
+        return Await::sample(); /*49:await*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Base
+     */
+    public static function fromBase(stdClass $value): Base {
+        return Base::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBase(): stdClass {
+        if (Obj1::validateBase($this->base))  {
+            return $this->base->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::base');
+    }
+
+    /**
+     * @param Base
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBase(Base $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Base
+     */
+    public function getBase(): Base {
+        if (Obj1::validateBase($this->base))  {
+            return $this->base;
+        }
+        throw new Exception('never get to getBase Obj1::base');
+    }
+
+    /**
+     * @return Base
+     */
+    public static function sampleBase(): Base {
+        return Base::sample(); /*50:base*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Bitand
+     */
+    public static function fromBitand(stdClass $value): Bitand {
+        return Bitand::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBitand(): stdClass {
+        if (Obj1::validateBitand($this->bitand))  {
+            return $this->bitand->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::bitand');
+    }
+
+    /**
+     * @param Bitand
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBitand(Bitand $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Bitand
+     */
+    public function getBitand(): Bitand {
+        if (Obj1::validateBitand($this->bitand))  {
+            return $this->bitand;
+        }
+        throw new Exception('never get to getBitand Obj1::bitand');
+    }
+
+    /**
+     * @return Bitand
+     */
+    public static function sampleBitand(): Bitand {
+        return Bitand::sample(); /*51:bitand*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Bitor
+     */
+    public static function fromBitor(stdClass $value): Bitor {
+        return Bitor::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBitor(): stdClass {
+        if (Obj1::validateBitor($this->bitor))  {
+            return $this->bitor->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::bitor');
+    }
+
+    /**
+     * @param Bitor
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBitor(Bitor $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Bitor
+     */
+    public function getBitor(): Bitor {
+        if (Obj1::validateBitor($this->bitor))  {
+            return $this->bitor;
+        }
+        throw new Exception('never get to getBitor Obj1::bitor');
+    }
+
+    /**
+     * @return Bitor
+     */
+    public static function sampleBitor(): Bitor {
+        return Bitor::sample(); /*52:bitor*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return BOOLClass
+     */
+    public static function fromBool(stdClass $value): BOOLClass {
+        return BOOLClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBool(): stdClass {
+        if (Obj1::validateBool($this->bool))  {
+            return $this->bool->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::bool');
+    }
+
+    /**
+     * @param BOOLClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBool(BOOLClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return BOOLClass
+     */
+    public function getBool(): BOOLClass {
+        if (Obj1::validateBool($this->bool))  {
+            return $this->bool;
+        }
+        throw new Exception('never get to getBool Obj1::bool');
+    }
+
+    /**
+     * @return BOOLClass
+     */
+    public static function sampleBool(): BOOLClass {
+        return BOOLClass::sample(); /*53:bool*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Boolean
+     */
+    public static function fromBoolean(stdClass $value): Boolean {
+        return Boolean::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBoolean(): stdClass {
+        if (Obj1::validateBoolean($this->boolean))  {
+            return $this->boolean->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::boolean');
+    }
+
+    /**
+     * @param Boolean
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBoolean(Boolean $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Boolean
+     */
+    public function getBoolean(): Boolean {
+        if (Obj1::validateBoolean($this->boolean))  {
+            return $this->boolean;
+        }
+        throw new Exception('never get to getBoolean Obj1::boolean');
+    }
+
+    /**
+     * @return Boolean
+     */
+    public static function sampleBoolean(): Boolean {
+        return Boolean::sample(); /*54:boolean*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return BreakClass
+     */
+    public static function fromBreak(stdClass $value): BreakClass {
+        return BreakClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBreak(): stdClass {
+        if (Obj1::validateBreak($this->break))  {
+            return $this->break->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::break');
+    }
+
+    /**
+     * @param BreakClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBreak(BreakClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return BreakClass
+     */
+    public function getBreak(): BreakClass {
+        if (Obj1::validateBreak($this->break))  {
+            return $this->break;
+        }
+        throw new Exception('never get to getBreak Obj1::break');
+    }
+
+    /**
+     * @return BreakClass
+     */
+    public static function sampleBreak(): BreakClass {
+        return BreakClass::sample(); /*55:break*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Bycopy
+     */
+    public static function fromBycopy(stdClass $value): Bycopy {
+        return Bycopy::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBycopy(): stdClass {
+        if (Obj1::validateBycopy($this->bycopy))  {
+            return $this->bycopy->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::bycopy');
+    }
+
+    /**
+     * @param Bycopy
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBycopy(Bycopy $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Bycopy
+     */
+    public function getBycopy(): Bycopy {
+        if (Obj1::validateBycopy($this->bycopy))  {
+            return $this->bycopy;
+        }
+        throw new Exception('never get to getBycopy Obj1::bycopy');
+    }
+
+    /**
+     * @return Bycopy
+     */
+    public static function sampleBycopy(): Bycopy {
+        return Bycopy::sample(); /*56:bycopy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Byref
+     */
+    public static function fromByref(stdClass $value): Byref {
+        return Byref::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toByref(): stdClass {
+        if (Obj1::validateByref($this->byref))  {
+            return $this->byref->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::byref');
+    }
+
+    /**
+     * @param Byref
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateByref(Byref $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Byref
+     */
+    public function getByref(): Byref {
+        if (Obj1::validateByref($this->byref))  {
+            return $this->byref;
+        }
+        throw new Exception('never get to getByref Obj1::byref');
+    }
+
+    /**
+     * @return Byref
+     */
+    public static function sampleByref(): Byref {
+        return Byref::sample(); /*57:byref*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Byte
+     */
+    public static function fromByte(stdClass $value): Byte {
+        return Byte::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toByte(): stdClass {
+        if (Obj1::validateByte($this->byte))  {
+            return $this->byte->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::byte');
+    }
+
+    /**
+     * @param Byte
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateByte(Byte $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Byte
+     */
+    public function getByte(): Byte {
+        if (Obj1::validateByte($this->byte))  {
+            return $this->byte;
+        }
+        throw new Exception('never get to getByte Obj1::byte');
+    }
+
+    /**
+     * @return Byte
+     */
+    public static function sampleByte(): Byte {
+        return Byte::sample(); /*58:byte*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CaseClass
+     */
+    public static function fromCase(stdClass $value): CaseClass {
+        return CaseClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCase(): stdClass {
+        if (Obj1::validateCase($this->case))  {
+            return $this->case->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::case');
+    }
+
+    /**
+     * @param CaseClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCase(CaseClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CaseClass
+     */
+    public function getCase(): CaseClass {
+        if (Obj1::validateCase($this->case))  {
+            return $this->case;
+        }
+        throw new Exception('never get to getCase Obj1::case');
+    }
+
+    /**
+     * @return CaseClass
+     */
+    public static function sampleCase(): CaseClass {
+        return CaseClass::sample(); /*59:case*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CatchClass
+     */
+    public static function fromCatch(stdClass $value): CatchClass {
+        return CatchClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCatch(): stdClass {
+        if (Obj1::validateCatch($this->catch))  {
+            return $this->catch->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::catch');
+    }
+
+    /**
+     * @param CatchClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCatch(CatchClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CatchClass
+     */
+    public function getCatch(): CatchClass {
+        if (Obj1::validateCatch($this->catch))  {
+            return $this->catch;
+        }
+        throw new Exception('never get to getCatch Obj1::catch');
+    }
+
+    /**
+     * @return CatchClass
+     */
+    public static function sampleCatch(): CatchClass {
+        return CatchClass::sample(); /*60:catch*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Chan
+     */
+    public static function fromChan(stdClass $value): Chan {
+        return Chan::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toChan(): stdClass {
+        if (Obj1::validateChan($this->chan))  {
+            return $this->chan->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::chan');
+    }
+
+    /**
+     * @param Chan
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChan(Chan $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Chan
+     */
+    public function getChan(): Chan {
+        if (Obj1::validateChan($this->chan))  {
+            return $this->chan;
+        }
+        throw new Exception('never get to getChan Obj1::chan');
+    }
+
+    /**
+     * @return Chan
+     */
+    public static function sampleChan(): Chan {
+        return Chan::sample(); /*61:chan*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Char
+     */
+    public static function fromChar(stdClass $value): Char {
+        return Char::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toChar(): stdClass {
+        if (Obj1::validateChar($this->char))  {
+            return $this->char->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::char');
+    }
+
+    /**
+     * @param Char
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChar(Char $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Char
+     */
+    public function getChar(): Char {
+        if (Obj1::validateChar($this->char))  {
+            return $this->char;
+        }
+        throw new Exception('never get to getChar Obj1::char');
+    }
+
+    /**
+     * @return Char
+     */
+    public static function sampleChar(): Char {
+        return Char::sample(); /*62:char*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Char16T
+     */
+    public static function fromChar16T(stdClass $value): Char16T {
+        return Char16T::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toChar16T(): stdClass {
+        if (Obj1::validateChar16T($this->char16T))  {
+            return $this->char16T->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::char16T');
+    }
+
+    /**
+     * @param Char16T
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChar16T(Char16T $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Char16T
+     */
+    public function getChar16T(): Char16T {
+        if (Obj1::validateChar16T($this->char16T))  {
+            return $this->char16T;
+        }
+        throw new Exception('never get to getChar16T Obj1::char16T');
+    }
+
+    /**
+     * @return Char16T
+     */
+    public static function sampleChar16T(): Char16T {
+        return Char16T::sample(); /*63:char16T*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Char32T
+     */
+    public static function fromChar32T(stdClass $value): Char32T {
+        return Char32T::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toChar32T(): stdClass {
+        if (Obj1::validateChar32T($this->char32T))  {
+            return $this->char32T->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::char32T');
+    }
+
+    /**
+     * @param Char32T
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChar32T(Char32T $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Char32T
+     */
+    public function getChar32T(): Char32T {
+        if (Obj1::validateChar32T($this->char32T))  {
+            return $this->char32T;
+        }
+        throw new Exception('never get to getChar32T Obj1::char32T');
+    }
+
+    /**
+     * @return Char32T
+     */
+    public static function sampleChar32T(): Char32T {
+        return Char32T::sample(); /*64:char32T*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Checked
+     */
+    public static function fromChecked(stdClass $value): Checked {
+        return Checked::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toChecked(): stdClass {
+        if (Obj1::validateChecked($this->checked))  {
+            return $this->checked->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::checked');
+    }
+
+    /**
+     * @param Checked
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChecked(Checked $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Checked
+     */
+    public function getChecked(): Checked {
+        if (Obj1::validateChecked($this->checked))  {
+            return $this->checked;
+        }
+        throw new Exception('never get to getChecked Obj1::checked');
+    }
+
+    /**
+     * @return Checked
+     */
+    public static function sampleChecked(): Checked {
+        return Checked::sample(); /*65:checked*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ClassClass
+     */
+    public static function fromClass(stdClass $value): ClassClass {
+        return ClassClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toClass(): stdClass {
+        if (Obj1::validateClass($this->class))  {
+            return $this->class->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::class');
+    }
+
+    /**
+     * @param ClassClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateClass(ClassClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ClassClass
+     */
+    public function getClass(): ClassClass {
+        if (Obj1::validateClass($this->class))  {
+            return $this->class;
+        }
+        throw new Exception('never get to getClass Obj1::class');
+    }
+
+    /**
+     * @return ClassClass
+     */
+    public static function sampleClass(): ClassClass {
+        return ClassClass::sample(); /*66:class*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CloneClass
+     */
+    public static function fromClone(stdClass $value): CloneClass {
+        return CloneClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toClone(): stdClass {
+        if (Obj1::validateClone($this->clone))  {
+            return $this->clone->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::clone');
+    }
+
+    /**
+     * @param CloneClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateClone(CloneClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CloneClass
+     */
+    public function getClone(): CloneClass {
+        if (Obj1::validateClone($this->clone))  {
+            return $this->clone;
+        }
+        throw new Exception('never get to getClone Obj1::clone');
+    }
+
+    /**
+     * @return CloneClass
+     */
+    public static function sampleClone(): CloneClass {
+        return CloneClass::sample(); /*67:clone*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CoAwait
+     */
+    public static function fromCoAwait(stdClass $value): CoAwait {
+        return CoAwait::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCoAwait(): stdClass {
+        if (Obj1::validateCoAwait($this->coAwait))  {
+            return $this->coAwait->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::coAwait');
+    }
+
+    /**
+     * @param CoAwait
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCoAwait(CoAwait $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CoAwait
+     */
+    public function getCoAwait(): CoAwait {
+        if (Obj1::validateCoAwait($this->coAwait))  {
+            return $this->coAwait;
+        }
+        throw new Exception('never get to getCoAwait Obj1::coAwait');
+    }
+
+    /**
+     * @return CoAwait
+     */
+    public static function sampleCoAwait(): CoAwait {
+        return CoAwait::sample(); /*68:coAwait*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CoReturn
+     */
+    public static function fromCoReturn(stdClass $value): CoReturn {
+        return CoReturn::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCoReturn(): stdClass {
+        if (Obj1::validateCoReturn($this->coReturn))  {
+            return $this->coReturn->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::coReturn');
+    }
+
+    /**
+     * @param CoReturn
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCoReturn(CoReturn $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CoReturn
+     */
+    public function getCoReturn(): CoReturn {
+        if (Obj1::validateCoReturn($this->coReturn))  {
+            return $this->coReturn;
+        }
+        throw new Exception('never get to getCoReturn Obj1::coReturn');
+    }
+
+    /**
+     * @return CoReturn
+     */
+    public static function sampleCoReturn(): CoReturn {
+        return CoReturn::sample(); /*69:coReturn*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CoYield
+     */
+    public static function fromCoYield(stdClass $value): CoYield {
+        return CoYield::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCoYield(): stdClass {
+        if (Obj1::validateCoYield($this->coYield))  {
+            return $this->coYield->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::coYield');
+    }
+
+    /**
+     * @param CoYield
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCoYield(CoYield $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CoYield
+     */
+    public function getCoYield(): CoYield {
+        if (Obj1::validateCoYield($this->coYield))  {
+            return $this->coYield;
+        }
+        throw new Exception('never get to getCoYield Obj1::coYield');
+    }
+
+    /**
+     * @return CoYield
+     */
+    public static function sampleCoYield(): CoYield {
+        return CoYield::sample(); /*70:coYield*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Compl
+     */
+    public static function fromCompl(stdClass $value): Compl {
+        return Compl::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCompl(): stdClass {
+        if (Obj1::validateCompl($this->compl))  {
+            return $this->compl->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::compl');
+    }
+
+    /**
+     * @param Compl
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCompl(Compl $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Compl
+     */
+    public function getCompl(): Compl {
+        if (Obj1::validateCompl($this->compl))  {
+            return $this->compl;
+        }
+        throw new Exception('never get to getCompl Obj1::compl');
+    }
+
+    /**
+     * @return Compl
+     */
+    public static function sampleCompl(): Compl {
+        return Compl::sample(); /*71:compl*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Complex
+     */
+    public static function fromComplex(stdClass $value): Complex {
+        return Complex::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toComplex(): stdClass {
+        if (Obj1::validateComplex($this->complex))  {
+            return $this->complex->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::complex');
+    }
+
+    /**
+     * @param Complex
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateComplex(Complex $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Complex
+     */
+    public function getComplex(): Complex {
+        if (Obj1::validateComplex($this->complex))  {
+            return $this->complex;
+        }
+        throw new Exception('never get to getComplex Obj1::complex');
+    }
+
+    /**
+     * @return Complex
+     */
+    public static function sampleComplex(): Complex {
+        return Complex::sample(); /*72:complex*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Concept
+     */
+    public static function fromConcept(stdClass $value): Concept {
+        return Concept::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConcept(): stdClass {
+        if (Obj1::validateConcept($this->concept))  {
+            return $this->concept->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::concept');
+    }
+
+    /**
+     * @param Concept
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConcept(Concept $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Concept
+     */
+    public function getConcept(): Concept {
+        if (Obj1::validateConcept($this->concept))  {
+            return $this->concept;
+        }
+        throw new Exception('never get to getConcept Obj1::concept');
+    }
+
+    /**
+     * @return Concept
+     */
+    public static function sampleConcept(): Concept {
+        return Concept::sample(); /*73:concept*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Console
+     */
+    public static function fromConsole(stdClass $value): Console {
+        return Console::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConsole(): stdClass {
+        if (Obj1::validateConsole($this->console))  {
+            return $this->console->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::console');
+    }
+
+    /**
+     * @param Console
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConsole(Console $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Console
+     */
+    public function getConsole(): Console {
+        if (Obj1::validateConsole($this->console))  {
+            return $this->console;
+        }
+        throw new Exception('never get to getConsole Obj1::console');
+    }
+
+    /**
+     * @return Console
+     */
+    public static function sampleConsole(): Console {
+        return Console::sample(); /*74:console*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ConstClass
+     */
+    public static function fromConst(stdClass $value): ConstClass {
+        return ConstClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConst(): stdClass {
+        if (Obj1::validateConst($this->const))  {
+            return $this->const->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::const');
+    }
+
+    /**
+     * @param ConstClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConst(ConstClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ConstClass
+     */
+    public function getConst(): ConstClass {
+        if (Obj1::validateConst($this->const))  {
+            return $this->const;
+        }
+        throw new Exception('never get to getConst Obj1::const');
+    }
+
+    /**
+     * @return ConstClass
+     */
+    public static function sampleConst(): ConstClass {
+        return ConstClass::sample(); /*75:const*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ConstCast
+     */
+    public static function fromConstCast(stdClass $value): ConstCast {
+        return ConstCast::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConstCast(): stdClass {
+        if (Obj1::validateConstCast($this->constCast))  {
+            return $this->constCast->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::constCast');
+    }
+
+    /**
+     * @param ConstCast
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConstCast(ConstCast $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ConstCast
+     */
+    public function getConstCast(): ConstCast {
+        if (Obj1::validateConstCast($this->constCast))  {
+            return $this->constCast;
+        }
+        throw new Exception('never get to getConstCast Obj1::constCast');
+    }
+
+    /**
+     * @return ConstCast
+     */
+    public static function sampleConstCast(): ConstCast {
+        return ConstCast::sample(); /*76:constCast*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Constexpr
+     */
+    public static function fromConstexpr(stdClass $value): Constexpr {
+        return Constexpr::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConstexpr(): stdClass {
+        if (Obj1::validateConstexpr($this->constexpr))  {
+            return $this->constexpr->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::constexpr');
+    }
+
+    /**
+     * @param Constexpr
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConstexpr(Constexpr $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Constexpr
+     */
+    public function getConstexpr(): Constexpr {
+        if (Obj1::validateConstexpr($this->constexpr))  {
+            return $this->constexpr;
+        }
+        throw new Exception('never get to getConstexpr Obj1::constexpr');
+    }
+
+    /**
+     * @return Constexpr
+     */
+    public static function sampleConstexpr(): Constexpr {
+        return Constexpr::sample(); /*77:constexpr*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Constructor
+     */
+    public static function fromConstructor(stdClass $value): Constructor {
+        return Constructor::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConstructor(): stdClass {
+        if (Obj1::validateConstructor($this->constructor))  {
+            return $this->constructor->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::constructor');
+    }
+
+    /**
+     * @param Constructor
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConstructor(Constructor $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Constructor
+     */
+    public function getConstructor(): Constructor {
+        if (Obj1::validateConstructor($this->constructor))  {
+            return $this->constructor;
+        }
+        throw new Exception('never get to getConstructor Obj1::constructor');
+    }
+
+    /**
+     * @return Constructor
+     */
+    public static function sampleConstructor(): Constructor {
+        return Constructor::sample(); /*78:constructor*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ContinueClass
+     */
+    public static function fromContinue(stdClass $value): ContinueClass {
+        return ContinueClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toContinue(): stdClass {
+        if (Obj1::validateContinue($this->continue))  {
+            return $this->continue->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::continue');
+    }
+
+    /**
+     * @param ContinueClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateContinue(ContinueClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ContinueClass
+     */
+    public function getContinue(): ContinueClass {
+        if (Obj1::validateContinue($this->continue))  {
+            return $this->continue;
+        }
+        throw new Exception('never get to getContinue Obj1::continue');
+    }
+
+    /**
+     * @return ContinueClass
+     */
+    public static function sampleContinue(): ContinueClass {
+        return ContinueClass::sample(); /*79:continue*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Convenience
+     */
+    public static function fromConvenience(stdClass $value): Convenience {
+        return Convenience::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConvenience(): stdClass {
+        if (Obj1::validateConvenience($this->convenience))  {
+            return $this->convenience->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::convenience');
+    }
+
+    /**
+     * @param Convenience
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConvenience(Convenience $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Convenience
+     */
+    public function getConvenience(): Convenience {
+        if (Obj1::validateConvenience($this->convenience))  {
+            return $this->convenience;
+        }
+        throw new Exception('never get to getConvenience Obj1::convenience');
+    }
+
+    /**
+     * @return Convenience
+     */
+    public static function sampleConvenience(): Convenience {
+        return Convenience::sample(); /*80:convenience*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Convert
+     */
+    public static function fromConvert(stdClass $value): Convert {
+        return Convert::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConvert(): stdClass {
+        if (Obj1::validateConvert($this->convert))  {
+            return $this->convert->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::convert');
+    }
+
+    /**
+     * @param Convert
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConvert(Convert $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Convert
+     */
+    public function getConvert(): Convert {
+        if (Obj1::validateConvert($this->convert))  {
+            return $this->convert;
+        }
+        throw new Exception('never get to getConvert Obj1::convert');
+    }
+
+    /**
+     * @return Convert
+     */
+    public static function sampleConvert(): Convert {
+        return Convert::sample(); /*81:convert*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ConverterClass
+     */
+    public static function fromConverter(stdClass $value): ConverterClass {
+        return ConverterClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toConverter(): stdClass {
+        if (Obj1::validateConverter($this->converter))  {
+            return $this->converter->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::converter');
+    }
+
+    /**
+     * @param ConverterClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConverter(ConverterClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ConverterClass
+     */
+    public function getConverter(): ConverterClass {
+        if (Obj1::validateConverter($this->converter))  {
+            return $this->converter;
+        }
+        throw new Exception('never get to getConverter Obj1::converter');
+    }
+
+    /**
+     * @return ConverterClass
+     */
+    public static function sampleConverter(): ConverterClass {
+        return ConverterClass::sample(); /*82:converter*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Date
+     */
+    public static function fromDate(stdClass $value): Date {
+        return Date::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDate(): stdClass {
+        if (Obj1::validateDate($this->date))  {
+            return $this->date->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::date');
+    }
+
+    /**
+     * @param Date
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDate(Date $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Date
+     */
+    public function getDate(): Date {
+        if (Obj1::validateDate($this->date))  {
+            return $this->date;
+        }
+        throw new Exception('never get to getDate Obj1::date');
+    }
+
+    /**
+     * @return Date
+     */
+    public static function sampleDate(): Date {
+        return Date::sample(); /*83:date*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DateParseHandling
+     */
+    public static function fromDateParseHandling(stdClass $value): DateParseHandling {
+        return DateParseHandling::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDateParseHandling(): stdClass {
+        if (Obj1::validateDateParseHandling($this->dateParseHandling))  {
+            return $this->dateParseHandling->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::dateParseHandling');
+    }
+
+    /**
+     * @param DateParseHandling
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDateParseHandling(DateParseHandling $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DateParseHandling
+     */
+    public function getDateParseHandling(): DateParseHandling {
+        if (Obj1::validateDateParseHandling($this->dateParseHandling))  {
+            return $this->dateParseHandling;
+        }
+        throw new Exception('never get to getDateParseHandling Obj1::dateParseHandling');
+    }
+
+    /**
+     * @return DateParseHandling
+     */
+    public static function sampleDateParseHandling(): DateParseHandling {
+        return DateParseHandling::sample(); /*84:dateParseHandling*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Debugger
+     */
+    public static function fromDebugger(stdClass $value): Debugger {
+        return Debugger::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDebugger(): stdClass {
+        if (Obj1::validateDebugger($this->debugger))  {
+            return $this->debugger->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::debugger');
+    }
+
+    /**
+     * @param Debugger
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDebugger(Debugger $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Debugger
+     */
+    public function getDebugger(): Debugger {
+        if (Obj1::validateDebugger($this->debugger))  {
+            return $this->debugger;
+        }
+        throw new Exception('never get to getDebugger Obj1::debugger');
+    }
+
+    /**
+     * @return Debugger
+     */
+    public static function sampleDebugger(): Debugger {
+        return Debugger::sample(); /*85:debugger*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Decimal
+     */
+    public static function fromDecimal(stdClass $value): Decimal {
+        return Decimal::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDecimal(): stdClass {
+        if (Obj1::validateDecimal($this->decimal))  {
+            return $this->decimal->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::decimal');
+    }
+
+    /**
+     * @param Decimal
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDecimal(Decimal $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Decimal
+     */
+    public function getDecimal(): Decimal {
+        if (Obj1::validateDecimal($this->decimal))  {
+            return $this->decimal;
+        }
+        throw new Exception('never get to getDecimal Obj1::decimal');
+    }
+
+    /**
+     * @return Decimal
+     */
+    public static function sampleDecimal(): Decimal {
+        return Decimal::sample(); /*86:decimal*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DeclareClass
+     */
+    public static function fromDeclare(stdClass $value): DeclareClass {
+        return DeclareClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDeclare(): stdClass {
+        if (Obj1::validateDeclare($this->declare))  {
+            return $this->declare->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::declare');
+    }
+
+    /**
+     * @param DeclareClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeclare(DeclareClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DeclareClass
+     */
+    public function getDeclare(): DeclareClass {
+        if (Obj1::validateDeclare($this->declare))  {
+            return $this->declare;
+        }
+        throw new Exception('never get to getDeclare Obj1::declare');
+    }
+
+    /**
+     * @return DeclareClass
+     */
+    public static function sampleDeclare(): DeclareClass {
+        return DeclareClass::sample(); /*87:declare*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Decltype
+     */
+    public static function fromDecltype(stdClass $value): Decltype {
+        return Decltype::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDecltype(): stdClass {
+        if (Obj1::validateDecltype($this->decltype))  {
+            return $this->decltype->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::decltype');
+    }
+
+    /**
+     * @param Decltype
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDecltype(Decltype $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Decltype
+     */
+    public function getDecltype(): Decltype {
+        if (Obj1::validateDecltype($this->decltype))  {
+            return $this->decltype;
+        }
+        throw new Exception('never get to getDecltype Obj1::decltype');
+    }
+
+    /**
+     * @return Decltype
+     */
+    public static function sampleDecltype(): Decltype {
+        return Decltype::sample(); /*88:decltype*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DecodeString
+     */
+    public static function fromDecodeString(stdClass $value): DecodeString {
+        return DecodeString::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDecodeString(): stdClass {
+        if (Obj1::validateDecodeString($this->decodeString))  {
+            return $this->decodeString->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::decodeString');
+    }
+
+    /**
+     * @param DecodeString
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDecodeString(DecodeString $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DecodeString
+     */
+    public function getDecodeString(): DecodeString {
+        if (Obj1::validateDecodeString($this->decodeString))  {
+            return $this->decodeString;
+        }
+        throw new Exception('never get to getDecodeString Obj1::decodeString');
+    }
+
+    /**
+     * @return DecodeString
+     */
+    public static function sampleDecodeString(): DecodeString {
+        return DecodeString::sample(); /*89:decodeString*/
+    }
+
+    /**
+     * @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 (Obj1::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this Obj1::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 (Obj1::validateDummy($this->dummy))  {
+            return $this->dummy;
+        }
+        throw new Exception('never get to getDummy Obj1::dummy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDummy(): int {
+        return 90; /*90:dummy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Purple
+     */
+    public static function fromEmpty(stdClass $value): Purple {
+        return Purple::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toEmpty(): stdClass {
+        if (Obj1::validateEmpty($this->empty))  {
+            return $this->empty->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::empty');
+    }
+
+    /**
+     * @param Purple
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEmpty(Purple $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Purple
+     */
+    public function getEmpty(): Purple {
+        if (Obj1::validateEmpty($this->empty))  {
+            return $this->empty;
+        }
+        throw new Exception('never get to getEmpty Obj1::empty');
+    }
+
+    /**
+     * @return Purple
+     */
+    public static function sampleEmpty(): Purple {
+        return Purple::sample(); /*91:empty*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Imaginery
+     */
+    public static function fromImaginery(stdClass $value): Imaginery {
+        return Imaginery::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toImaginery(): stdClass {
+        if (Obj1::validateImaginery($this->imaginery))  {
+            return $this->imaginery->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::imaginery');
+    }
+
+    /**
+     * @param Imaginery
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImaginery(Imaginery $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Imaginery
+     */
+    public function getImaginery(): Imaginery {
+        if (Obj1::validateImaginery($this->imaginery))  {
+            return $this->imaginery;
+        }
+        throw new Exception('never get to getImaginery Obj1::imaginery');
+    }
+
+    /**
+     * @return Imaginery
+     */
+    public static function sampleImaginery(): Imaginery {
+        return Imaginery::sample(); /*92:imaginery*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return AnyClass
+     */
+    public static function fromObj1Any(stdClass $value): AnyClass {
+        return AnyClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj1Any(): stdClass {
+        if (Obj1::validateObj1Any($this->obj1Any))  {
+            return $this->obj1Any->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::obj1Any');
+    }
+
+    /**
+     * @param AnyClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj1Any(AnyClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return AnyClass
+     */
+    public function getObj1Any(): AnyClass {
+        if (Obj1::validateObj1Any($this->obj1Any))  {
+            return $this->obj1Any;
+        }
+        throw new Exception('never get to getObj1Any Obj1::obj1Any');
+    }
+
+    /**
+     * @return AnyClass
+     */
+    public static function sampleObj1Any(): AnyClass {
+        return AnyClass::sample(); /*93:obj1Any*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj1Bool
+     */
+    public static function fromObj1Bool(stdClass $value): Obj1Bool {
+        return Obj1Bool::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj1Bool(): stdClass {
+        if (Obj1::validateObj1Bool($this->obj1Bool))  {
+            return $this->obj1Bool->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::obj1Bool');
+    }
+
+    /**
+     * @param Obj1Bool
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj1Bool(Obj1Bool $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj1Bool
+     */
+    public function getObj1Bool(): Obj1Bool {
+        if (Obj1::validateObj1Bool($this->obj1Bool))  {
+            return $this->obj1Bool;
+        }
+        throw new Exception('never get to getObj1Bool Obj1::obj1Bool');
+    }
+
+    /**
+     * @return Obj1Bool
+     */
+    public static function sampleObj1Bool(): Obj1Bool {
+        return Obj1Bool::sample(); /*94:obj1Bool*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj1Class
+     */
+    public static function fromObj1Class(stdClass $value): Obj1Class {
+        return Obj1Class::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj1Class(): stdClass {
+        if (Obj1::validateObj1Class($this->obj1Class))  {
+            return $this->obj1Class->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::obj1Class');
+    }
+
+    /**
+     * @param Obj1Class
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj1Class(Obj1Class $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj1Class
+     */
+    public function getObj1Class(): Obj1Class {
+        if (Obj1::validateObj1Class($this->obj1Class))  {
+            return $this->obj1Class;
+        }
+        throw new Exception('never get to getObj1Class Obj1::obj1Class');
+    }
+
+    /**
+     * @return Obj1Class
+     */
+    public static function sampleObj1Class(): Obj1Class {
+        return Obj1Class::sample(); /*95:obj1Class*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj1BoolClass
+     */
+    public static function fromPurpleBool(stdClass $value): Obj1BoolClass {
+        return Obj1BoolClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPurpleBool(): stdClass {
+        if (Obj1::validatePurpleBool($this->purpleBool))  {
+            return $this->purpleBool->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::purpleBool');
+    }
+
+    /**
+     * @param Obj1BoolClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePurpleBool(Obj1BoolClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj1BoolClass
+     */
+    public function getPurpleBool(): Obj1BoolClass {
+        if (Obj1::validatePurpleBool($this->purpleBool))  {
+            return $this->purpleBool;
+        }
+        throw new Exception('never get to getPurpleBool Obj1::purpleBool');
+    }
+
+    /**
+     * @return Obj1BoolClass
+     */
+    public static function samplePurpleBool(): Obj1BoolClass {
+        return Obj1BoolClass::sample(); /*96:purpleBool*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj1::validateAbstract($this->abstract)
+        || Obj1::validateAlignas($this->alignas)
+        || Obj1::validateAlignof($this->alignof)
+        || Obj1::validateAnd($this->and)
+        || Obj1::validateAndEq($this->andEq)
+        || Obj1::validateAny($this->any)
+        || Obj1::validateArray($this->array)
+        || Obj1::validateAs($this->as)
+        || Obj1::validateASM($this->asm)
+        || Obj1::validateAssert($this->assert)
+        || Obj1::validateAssociatedtype($this->associatedtype)
+        || Obj1::validateAssociativity($this->associativity)
+        || Obj1::validateAsync($this->async)
+        || Obj1::validateAtomic($this->atomic)
+        || Obj1::validateAtomicCancel($this->atomicCancel)
+        || Obj1::validateAtomicCommit($this->atomicCommit)
+        || Obj1::validateAtomicNoexcept($this->atomicNoexcept)
+        || Obj1::validateAuto($this->auto)
+        || Obj1::validateAwait($this->await)
+        || Obj1::validateBase($this->base)
+        || Obj1::validateBitand($this->bitand)
+        || Obj1::validateBitor($this->bitor)
+        || Obj1::validateBool($this->bool)
+        || Obj1::validateBoolean($this->boolean)
+        || Obj1::validateBreak($this->break)
+        || Obj1::validateBycopy($this->bycopy)
+        || Obj1::validateByref($this->byref)
+        || Obj1::validateByte($this->byte)
+        || Obj1::validateCase($this->case)
+        || Obj1::validateCatch($this->catch)
+        || Obj1::validateChan($this->chan)
+        || Obj1::validateChar($this->char)
+        || Obj1::validateChar16T($this->char16T)
+        || Obj1::validateChar32T($this->char32T)
+        || Obj1::validateChecked($this->checked)
+        || Obj1::validateClass($this->class)
+        || Obj1::validateClone($this->clone)
+        || Obj1::validateCoAwait($this->coAwait)
+        || Obj1::validateCoReturn($this->coReturn)
+        || Obj1::validateCoYield($this->coYield)
+        || Obj1::validateCompl($this->compl)
+        || Obj1::validateComplex($this->complex)
+        || Obj1::validateConcept($this->concept)
+        || Obj1::validateConsole($this->console)
+        || Obj1::validateConst($this->const)
+        || Obj1::validateConstCast($this->constCast)
+        || Obj1::validateConstexpr($this->constexpr)
+        || Obj1::validateConstructor($this->constructor)
+        || Obj1::validateContinue($this->continue)
+        || Obj1::validateConvenience($this->convenience)
+        || Obj1::validateConvert($this->convert)
+        || Obj1::validateConverter($this->converter)
+        || Obj1::validateDate($this->date)
+        || Obj1::validateDateParseHandling($this->dateParseHandling)
+        || Obj1::validateDebugger($this->debugger)
+        || Obj1::validateDecimal($this->decimal)
+        || Obj1::validateDeclare($this->declare)
+        || Obj1::validateDecltype($this->decltype)
+        || Obj1::validateDecodeString($this->decodeString)
+        || Obj1::validateDummy($this->dummy)
+        || Obj1::validateEmpty($this->empty)
+        || Obj1::validateImaginery($this->imaginery)
+        || Obj1::validateObj1Any($this->obj1Any)
+        || Obj1::validateObj1Bool($this->obj1Bool)
+        || Obj1::validateObj1Class($this->obj1Class)
+        || Obj1::validatePurpleBool($this->purpleBool);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'abstract'} = $this->toAbstract();
+        $out->{'alignas'} = $this->toAlignas();
+        $out->{'alignof'} = $this->toAlignof();
+        $out->{'and'} = $this->toAnd();
+        $out->{'and_eq'} = $this->toAndEq();
+        $out->{'Any'} = $this->toAny();
+        $out->{'array'} = $this->toArray();
+        $out->{'as'} = $this->toAs();
+        $out->{'asm'} = $this->toASM();
+        $out->{'assert'} = $this->toAssert();
+        $out->{'associatedtype'} = $this->toAssociatedtype();
+        $out->{'associativity'} = $this->toAssociativity();
+        $out->{'async'} = $this->toAsync();
+        $out->{'atomic'} = $this->toAtomic();
+        $out->{'atomic_cancel'} = $this->toAtomicCancel();
+        $out->{'atomic_commit'} = $this->toAtomicCommit();
+        $out->{'atomic_noexcept'} = $this->toAtomicNoexcept();
+        $out->{'auto'} = $this->toAuto();
+        $out->{'await'} = $this->toAwait();
+        $out->{'base'} = $this->toBase();
+        $out->{'bitand'} = $this->toBitand();
+        $out->{'bitor'} = $this->toBitor();
+        $out->{'BOOL'} = $this->toBool();
+        $out->{'boolean'} = $this->toBoolean();
+        $out->{'break'} = $this->toBreak();
+        $out->{'bycopy'} = $this->toBycopy();
+        $out->{'byref'} = $this->toByref();
+        $out->{'byte'} = $this->toByte();
+        $out->{'case'} = $this->toCase();
+        $out->{'catch'} = $this->toCatch();
+        $out->{'chan'} = $this->toChan();
+        $out->{'char'} = $this->toChar();
+        $out->{'char16_t'} = $this->toChar16T();
+        $out->{'char32_t'} = $this->toChar32T();
+        $out->{'checked'} = $this->toChecked();
+        $out->{'Class'} = $this->toClass();
+        $out->{'clone'} = $this->toClone();
+        $out->{'co_await'} = $this->toCoAwait();
+        $out->{'co_return'} = $this->toCoReturn();
+        $out->{'co_yield'} = $this->toCoYield();
+        $out->{'compl'} = $this->toCompl();
+        $out->{'_Complex'} = $this->toComplex();
+        $out->{'concept'} = $this->toConcept();
+        $out->{'console'} = $this->toConsole();
+        $out->{'const'} = $this->toConst();
+        $out->{'const_cast'} = $this->toConstCast();
+        $out->{'constexpr'} = $this->toConstexpr();
+        $out->{'constructor'} = $this->toConstructor();
+        $out->{'continue'} = $this->toContinue();
+        $out->{'convenience'} = $this->toConvenience();
+        $out->{'convert'} = $this->toConvert();
+        $out->{'converter'} = $this->toConverter();
+        $out->{'date'} = $this->toDate();
+        $out->{'date_parse_handling'} = $this->toDateParseHandling();
+        $out->{'debugger'} = $this->toDebugger();
+        $out->{'decimal'} = $this->toDecimal();
+        $out->{'declare'} = $this->toDeclare();
+        $out->{'decltype'} = $this->toDecltype();
+        $out->{'decode_string'} = $this->toDecodeString();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'_'} = $this->toEmpty();
+        $out->{'_Imaginery'} = $this->toImaginery();
+        $out->{'any'} = $this->toObj1Any();
+        $out->{'_Bool'} = $this->toObj1Bool();
+        $out->{'class'} = $this->toObj1Class();
+        $out->{'bool'} = $this->toPurpleBool();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj1
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj1 {
+        return new Obj1(
+         Obj1::fromAbstract($obj->{'abstract'})
+        ,Obj1::fromAlignas($obj->{'alignas'})
+        ,Obj1::fromAlignof($obj->{'alignof'})
+        ,Obj1::fromAnd($obj->{'and'})
+        ,Obj1::fromAndEq($obj->{'and_eq'})
+        ,Obj1::fromAny($obj->{'Any'})
+        ,Obj1::fromArray($obj->{'array'})
+        ,Obj1::fromAs($obj->{'as'})
+        ,Obj1::fromASM($obj->{'asm'})
+        ,Obj1::fromAssert($obj->{'assert'})
+        ,Obj1::fromAssociatedtype($obj->{'associatedtype'})
+        ,Obj1::fromAssociativity($obj->{'associativity'})
+        ,Obj1::fromAsync($obj->{'async'})
+        ,Obj1::fromAtomic($obj->{'atomic'})
+        ,Obj1::fromAtomicCancel($obj->{'atomic_cancel'})
+        ,Obj1::fromAtomicCommit($obj->{'atomic_commit'})
+        ,Obj1::fromAtomicNoexcept($obj->{'atomic_noexcept'})
+        ,Obj1::fromAuto($obj->{'auto'})
+        ,Obj1::fromAwait($obj->{'await'})
+        ,Obj1::fromBase($obj->{'base'})
+        ,Obj1::fromBitand($obj->{'bitand'})
+        ,Obj1::fromBitor($obj->{'bitor'})
+        ,Obj1::fromBool($obj->{'BOOL'})
+        ,Obj1::fromBoolean($obj->{'boolean'})
+        ,Obj1::fromBreak($obj->{'break'})
+        ,Obj1::fromBycopy($obj->{'bycopy'})
+        ,Obj1::fromByref($obj->{'byref'})
+        ,Obj1::fromByte($obj->{'byte'})
+        ,Obj1::fromCase($obj->{'case'})
+        ,Obj1::fromCatch($obj->{'catch'})
+        ,Obj1::fromChan($obj->{'chan'})
+        ,Obj1::fromChar($obj->{'char'})
+        ,Obj1::fromChar16T($obj->{'char16_t'})
+        ,Obj1::fromChar32T($obj->{'char32_t'})
+        ,Obj1::fromChecked($obj->{'checked'})
+        ,Obj1::fromClass($obj->{'Class'})
+        ,Obj1::fromClone($obj->{'clone'})
+        ,Obj1::fromCoAwait($obj->{'co_await'})
+        ,Obj1::fromCoReturn($obj->{'co_return'})
+        ,Obj1::fromCoYield($obj->{'co_yield'})
+        ,Obj1::fromCompl($obj->{'compl'})
+        ,Obj1::fromComplex($obj->{'_Complex'})
+        ,Obj1::fromConcept($obj->{'concept'})
+        ,Obj1::fromConsole($obj->{'console'})
+        ,Obj1::fromConst($obj->{'const'})
+        ,Obj1::fromConstCast($obj->{'const_cast'})
+        ,Obj1::fromConstexpr($obj->{'constexpr'})
+        ,Obj1::fromConstructor($obj->{'constructor'})
+        ,Obj1::fromContinue($obj->{'continue'})
+        ,Obj1::fromConvenience($obj->{'convenience'})
+        ,Obj1::fromConvert($obj->{'convert'})
+        ,Obj1::fromConverter($obj->{'converter'})
+        ,Obj1::fromDate($obj->{'date'})
+        ,Obj1::fromDateParseHandling($obj->{'date_parse_handling'})
+        ,Obj1::fromDebugger($obj->{'debugger'})
+        ,Obj1::fromDecimal($obj->{'decimal'})
+        ,Obj1::fromDeclare($obj->{'declare'})
+        ,Obj1::fromDecltype($obj->{'decltype'})
+        ,Obj1::fromDecodeString($obj->{'decode_string'})
+        ,Obj1::fromDummy($obj->{'dummy'})
+        ,Obj1::fromEmpty($obj->{'_'})
+        ,Obj1::fromImaginery($obj->{'_Imaginery'})
+        ,Obj1::fromObj1Any($obj->{'any'})
+        ,Obj1::fromObj1Bool($obj->{'_Bool'})
+        ,Obj1::fromObj1Class($obj->{'class'})
+        ,Obj1::fromPurpleBool($obj->{'bool'})
+        );
+    }
+
+    /**
+     * @return Obj1
+     */
+    public static function sample(): Obj1 {
+        return new Obj1(
+         Obj1::sampleAbstract()
+        ,Obj1::sampleAlignas()
+        ,Obj1::sampleAlignof()
+        ,Obj1::sampleAnd()
+        ,Obj1::sampleAndEq()
+        ,Obj1::sampleAny()
+        ,Obj1::sampleArray()
+        ,Obj1::sampleAs()
+        ,Obj1::sampleASM()
+        ,Obj1::sampleAssert()
+        ,Obj1::sampleAssociatedtype()
+        ,Obj1::sampleAssociativity()
+        ,Obj1::sampleAsync()
+        ,Obj1::sampleAtomic()
+        ,Obj1::sampleAtomicCancel()
+        ,Obj1::sampleAtomicCommit()
+        ,Obj1::sampleAtomicNoexcept()
+        ,Obj1::sampleAuto()
+        ,Obj1::sampleAwait()
+        ,Obj1::sampleBase()
+        ,Obj1::sampleBitand()
+        ,Obj1::sampleBitor()
+        ,Obj1::sampleBool()
+        ,Obj1::sampleBoolean()
+        ,Obj1::sampleBreak()
+        ,Obj1::sampleBycopy()
+        ,Obj1::sampleByref()
+        ,Obj1::sampleByte()
+        ,Obj1::sampleCase()
+        ,Obj1::sampleCatch()
+        ,Obj1::sampleChan()
+        ,Obj1::sampleChar()
+        ,Obj1::sampleChar16T()
+        ,Obj1::sampleChar32T()
+        ,Obj1::sampleChecked()
+        ,Obj1::sampleClass()
+        ,Obj1::sampleClone()
+        ,Obj1::sampleCoAwait()
+        ,Obj1::sampleCoReturn()
+        ,Obj1::sampleCoYield()
+        ,Obj1::sampleCompl()
+        ,Obj1::sampleComplex()
+        ,Obj1::sampleConcept()
+        ,Obj1::sampleConsole()
+        ,Obj1::sampleConst()
+        ,Obj1::sampleConstCast()
+        ,Obj1::sampleConstexpr()
+        ,Obj1::sampleConstructor()
+        ,Obj1::sampleContinue()
+        ,Obj1::sampleConvenience()
+        ,Obj1::sampleConvert()
+        ,Obj1::sampleConverter()
+        ,Obj1::sampleDate()
+        ,Obj1::sampleDateParseHandling()
+        ,Obj1::sampleDebugger()
+        ,Obj1::sampleDecimal()
+        ,Obj1::sampleDeclare()
+        ,Obj1::sampleDecltype()
+        ,Obj1::sampleDecodeString()
+        ,Obj1::sampleDummy()
+        ,Obj1::sampleEmpty()
+        ,Obj1::sampleImaginery()
+        ,Obj1::sampleObj1Any()
+        ,Obj1::sampleObj1Bool()
+        ,Obj1::sampleObj1Class()
+        ,Obj1::samplePurpleBool()
+        );
+    }
+}
+
+// This is an autogenerated file:AbstractClass
+
+class AbstractClass {
+    private int $abstract; // json:abstract Required
+
+    /**
+     * @param int $abstract
+     */
+    public function __construct(int $abstract) {
+        $this->abstract = $abstract;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAbstract(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAbstract(): int {
+        if (AbstractClass::validateAbstract($this->abstract))  {
+            return $this->abstract; /*int*/
+        }
+        throw new Exception('never get to this AbstractClass::abstract');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAbstract(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAbstract(): int {
+        if (AbstractClass::validateAbstract($this->abstract))  {
+            return $this->abstract;
+        }
+        throw new Exception('never get to getAbstract AbstractClass::abstract');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAbstract(): int {
+        return 31; /*31:abstract*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AbstractClass::validateAbstract($this->abstract);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'abstract'} = $this->toAbstract();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AbstractClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AbstractClass {
+        return new AbstractClass(
+         AbstractClass::fromAbstract($obj->{'abstract'})
+        );
+    }
+
+    /**
+     * @return AbstractClass
+     */
+    public static function sample(): AbstractClass {
+        return new AbstractClass(
+         AbstractClass::sampleAbstract()
+        );
+    }
+}
+
+// This is an autogenerated file:Alignas
+
+class Alignas {
+    private int $alignas; // json:alignas Required
+
+    /**
+     * @param int $alignas
+     */
+    public function __construct(int $alignas) {
+        $this->alignas = $alignas;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAlignas(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAlignas(): int {
+        if (Alignas::validateAlignas($this->alignas))  {
+            return $this->alignas; /*int*/
+        }
+        throw new Exception('never get to this Alignas::alignas');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAlignas(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAlignas(): int {
+        if (Alignas::validateAlignas($this->alignas))  {
+            return $this->alignas;
+        }
+        throw new Exception('never get to getAlignas Alignas::alignas');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAlignas(): int {
+        return 31; /*31:alignas*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Alignas::validateAlignas($this->alignas);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'alignas'} = $this->toAlignas();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Alignas
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Alignas {
+        return new Alignas(
+         Alignas::fromAlignas($obj->{'alignas'})
+        );
+    }
+
+    /**
+     * @return Alignas
+     */
+    public static function sample(): Alignas {
+        return new Alignas(
+         Alignas::sampleAlignas()
+        );
+    }
+}
+
+// This is an autogenerated file:Alignof
+
+class Alignof {
+    private int $alignof; // json:alignof Required
+
+    /**
+     * @param int $alignof
+     */
+    public function __construct(int $alignof) {
+        $this->alignof = $alignof;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAlignof(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAlignof(): int {
+        if (Alignof::validateAlignof($this->alignof))  {
+            return $this->alignof; /*int*/
+        }
+        throw new Exception('never get to this Alignof::alignof');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAlignof(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAlignof(): int {
+        if (Alignof::validateAlignof($this->alignof))  {
+            return $this->alignof;
+        }
+        throw new Exception('never get to getAlignof Alignof::alignof');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAlignof(): int {
+        return 31; /*31:alignof*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Alignof::validateAlignof($this->alignof);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'alignof'} = $this->toAlignof();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Alignof
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Alignof {
+        return new Alignof(
+         Alignof::fromAlignof($obj->{'alignof'})
+        );
+    }
+
+    /**
+     * @return Alignof
+     */
+    public static function sample(): Alignof {
+        return new Alignof(
+         Alignof::sampleAlignof()
+        );
+    }
+}
+
+// This is an autogenerated file:AndClass
+
+class AndClass {
+    private int $and; // json:and Required
+
+    /**
+     * @param int $and
+     */
+    public function __construct(int $and) {
+        $this->and = $and;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAnd(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAnd(): int {
+        if (AndClass::validateAnd($this->and))  {
+            return $this->and; /*int*/
+        }
+        throw new Exception('never get to this AndClass::and');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAnd(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAnd(): int {
+        if (AndClass::validateAnd($this->and))  {
+            return $this->and;
+        }
+        throw new Exception('never get to getAnd AndClass::and');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAnd(): int {
+        return 31; /*31:and*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AndClass::validateAnd($this->and);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'and'} = $this->toAnd();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AndClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AndClass {
+        return new AndClass(
+         AndClass::fromAnd($obj->{'and'})
+        );
+    }
+
+    /**
+     * @return AndClass
+     */
+    public static function sample(): AndClass {
+        return new AndClass(
+         AndClass::sampleAnd()
+        );
+    }
+}
+
+// This is an autogenerated file:AndEq
+
+class AndEq {
+    private int $andEq; // json:and_eq Required
+
+    /**
+     * @param int $andEq
+     */
+    public function __construct(int $andEq) {
+        $this->andEq = $andEq;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAndEq(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAndEq(): int {
+        if (AndEq::validateAndEq($this->andEq))  {
+            return $this->andEq; /*int*/
+        }
+        throw new Exception('never get to this AndEq::andEq');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAndEq(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAndEq(): int {
+        if (AndEq::validateAndEq($this->andEq))  {
+            return $this->andEq;
+        }
+        throw new Exception('never get to getAndEq AndEq::andEq');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAndEq(): int {
+        return 31; /*31:andEq*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AndEq::validateAndEq($this->andEq);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'and_eq'} = $this->toAndEq();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AndEq
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AndEq {
+        return new AndEq(
+         AndEq::fromAndEq($obj->{'and_eq'})
+        );
+    }
+
+    /**
+     * @return AndEq
+     */
+    public static function sample(): AndEq {
+        return new AndEq(
+         AndEq::sampleAndEq()
+        );
+    }
+}
+
+// This is an autogenerated file:Any
+
+class Any {
+    private int $any; // json:Any Required
+
+    /**
+     * @param int $any
+     */
+    public function __construct(int $any) {
+        $this->any = $any;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAny(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAny(): int {
+        if (Any::validateAny($this->any))  {
+            return $this->any; /*int*/
+        }
+        throw new Exception('never get to this Any::any');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAny(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAny(): int {
+        if (Any::validateAny($this->any))  {
+            return $this->any;
+        }
+        throw new Exception('never get to getAny Any::any');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAny(): int {
+        return 31; /*31:any*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Any::validateAny($this->any);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Any'} = $this->toAny();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Any
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Any {
+        return new Any(
+         Any::fromAny($obj->{'Any'})
+        );
+    }
+
+    /**
+     * @return Any
+     */
+    public static function sample(): Any {
+        return new Any(
+         Any::sampleAny()
+        );
+    }
+}
+
+// This is an autogenerated file:ArrayClass
+
+class ArrayClass {
+    private int $array; // json:array Required
+
+    /**
+     * @param int $array
+     */
+    public function __construct(int $array) {
+        $this->array = $array;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromArray(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toArray(): int {
+        if (ArrayClass::validateArray($this->array))  {
+            return $this->array; /*int*/
+        }
+        throw new Exception('never get to this ArrayClass::array');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateArray(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getArray(): int {
+        if (ArrayClass::validateArray($this->array))  {
+            return $this->array;
+        }
+        throw new Exception('never get to getArray ArrayClass::array');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleArray(): int {
+        return 31; /*31:array*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ArrayClass::validateArray($this->array);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'array'} = $this->toArray();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ArrayClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ArrayClass {
+        return new ArrayClass(
+         ArrayClass::fromArray($obj->{'array'})
+        );
+    }
+
+    /**
+     * @return ArrayClass
+     */
+    public static function sample(): ArrayClass {
+        return new ArrayClass(
+         ArrayClass::sampleArray()
+        );
+    }
+}
+
+// This is an autogenerated file:AsClass
+
+class AsClass {
+    private int $as; // json:as Required
+
+    /**
+     * @param int $as
+     */
+    public function __construct(int $as) {
+        $this->as = $as;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAs(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAs(): int {
+        if (AsClass::validateAs($this->as))  {
+            return $this->as; /*int*/
+        }
+        throw new Exception('never get to this AsClass::as');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAs(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAs(): int {
+        if (AsClass::validateAs($this->as))  {
+            return $this->as;
+        }
+        throw new Exception('never get to getAs AsClass::as');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAs(): int {
+        return 31; /*31:as*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AsClass::validateAs($this->as);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'as'} = $this->toAs();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AsClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AsClass {
+        return new AsClass(
+         AsClass::fromAs($obj->{'as'})
+        );
+    }
+
+    /**
+     * @return AsClass
+     */
+    public static function sample(): AsClass {
+        return new AsClass(
+         AsClass::sampleAs()
+        );
+    }
+}
+
+// This is an autogenerated file:ASM
+
+class ASM {
+    private int $asm; // json:asm Required
+
+    /**
+     * @param int $asm
+     */
+    public function __construct(int $asm) {
+        $this->asm = $asm;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromASM(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toASM(): int {
+        if (ASM::validateASM($this->asm))  {
+            return $this->asm; /*int*/
+        }
+        throw new Exception('never get to this ASM::asm');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateASM(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getASM(): int {
+        if (ASM::validateASM($this->asm))  {
+            return $this->asm;
+        }
+        throw new Exception('never get to getASM ASM::asm');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleASM(): int {
+        return 31; /*31:asm*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ASM::validateASM($this->asm);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'asm'} = $this->toASM();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ASM
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ASM {
+        return new ASM(
+         ASM::fromASM($obj->{'asm'})
+        );
+    }
+
+    /**
+     * @return ASM
+     */
+    public static function sample(): ASM {
+        return new ASM(
+         ASM::sampleASM()
+        );
+    }
+}
+
+// This is an autogenerated file:Assert
+
+class Assert {
+    private int $assert; // json:assert Required
+
+    /**
+     * @param int $assert
+     */
+    public function __construct(int $assert) {
+        $this->assert = $assert;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAssert(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAssert(): int {
+        if (Assert::validateAssert($this->assert))  {
+            return $this->assert; /*int*/
+        }
+        throw new Exception('never get to this Assert::assert');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAssert(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAssert(): int {
+        if (Assert::validateAssert($this->assert))  {
+            return $this->assert;
+        }
+        throw new Exception('never get to getAssert Assert::assert');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAssert(): int {
+        return 31; /*31:assert*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Assert::validateAssert($this->assert);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'assert'} = $this->toAssert();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Assert
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Assert {
+        return new Assert(
+         Assert::fromAssert($obj->{'assert'})
+        );
+    }
+
+    /**
+     * @return Assert
+     */
+    public static function sample(): Assert {
+        return new Assert(
+         Assert::sampleAssert()
+        );
+    }
+}
+
+// This is an autogenerated file:Associatedtype
+
+class Associatedtype {
+    private int $associatedtype; // json:associatedtype Required
+
+    /**
+     * @param int $associatedtype
+     */
+    public function __construct(int $associatedtype) {
+        $this->associatedtype = $associatedtype;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAssociatedtype(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAssociatedtype(): int {
+        if (Associatedtype::validateAssociatedtype($this->associatedtype))  {
+            return $this->associatedtype; /*int*/
+        }
+        throw new Exception('never get to this Associatedtype::associatedtype');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAssociatedtype(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAssociatedtype(): int {
+        if (Associatedtype::validateAssociatedtype($this->associatedtype))  {
+            return $this->associatedtype;
+        }
+        throw new Exception('never get to getAssociatedtype Associatedtype::associatedtype');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAssociatedtype(): int {
+        return 31; /*31:associatedtype*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Associatedtype::validateAssociatedtype($this->associatedtype);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'associatedtype'} = $this->toAssociatedtype();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Associatedtype
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Associatedtype {
+        return new Associatedtype(
+         Associatedtype::fromAssociatedtype($obj->{'associatedtype'})
+        );
+    }
+
+    /**
+     * @return Associatedtype
+     */
+    public static function sample(): Associatedtype {
+        return new Associatedtype(
+         Associatedtype::sampleAssociatedtype()
+        );
+    }
+}
+
+// This is an autogenerated file:Associativity
+
+class Associativity {
+    private int $associativity; // json:associativity Required
+
+    /**
+     * @param int $associativity
+     */
+    public function __construct(int $associativity) {
+        $this->associativity = $associativity;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAssociativity(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAssociativity(): int {
+        if (Associativity::validateAssociativity($this->associativity))  {
+            return $this->associativity; /*int*/
+        }
+        throw new Exception('never get to this Associativity::associativity');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAssociativity(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAssociativity(): int {
+        if (Associativity::validateAssociativity($this->associativity))  {
+            return $this->associativity;
+        }
+        throw new Exception('never get to getAssociativity Associativity::associativity');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAssociativity(): int {
+        return 31; /*31:associativity*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Associativity::validateAssociativity($this->associativity);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'associativity'} = $this->toAssociativity();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Associativity
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Associativity {
+        return new Associativity(
+         Associativity::fromAssociativity($obj->{'associativity'})
+        );
+    }
+
+    /**
+     * @return Associativity
+     */
+    public static function sample(): Associativity {
+        return new Associativity(
+         Associativity::sampleAssociativity()
+        );
+    }
+}
+
+// This is an autogenerated file:Async
+
+class Async {
+    private int $async; // json:async Required
+
+    /**
+     * @param int $async
+     */
+    public function __construct(int $async) {
+        $this->async = $async;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAsync(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAsync(): int {
+        if (Async::validateAsync($this->async))  {
+            return $this->async; /*int*/
+        }
+        throw new Exception('never get to this Async::async');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAsync(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAsync(): int {
+        if (Async::validateAsync($this->async))  {
+            return $this->async;
+        }
+        throw new Exception('never get to getAsync Async::async');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAsync(): int {
+        return 31; /*31:async*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Async::validateAsync($this->async);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'async'} = $this->toAsync();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Async
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Async {
+        return new Async(
+         Async::fromAsync($obj->{'async'})
+        );
+    }
+
+    /**
+     * @return Async
+     */
+    public static function sample(): Async {
+        return new Async(
+         Async::sampleAsync()
+        );
+    }
+}
+
+// This is an autogenerated file:Atomic
+
+class Atomic {
+    private int $atomic; // json:atomic Required
+
+    /**
+     * @param int $atomic
+     */
+    public function __construct(int $atomic) {
+        $this->atomic = $atomic;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAtomic(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAtomic(): int {
+        if (Atomic::validateAtomic($this->atomic))  {
+            return $this->atomic; /*int*/
+        }
+        throw new Exception('never get to this Atomic::atomic');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomic(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAtomic(): int {
+        if (Atomic::validateAtomic($this->atomic))  {
+            return $this->atomic;
+        }
+        throw new Exception('never get to getAtomic Atomic::atomic');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAtomic(): int {
+        return 31; /*31:atomic*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Atomic::validateAtomic($this->atomic);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'atomic'} = $this->toAtomic();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Atomic
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Atomic {
+        return new Atomic(
+         Atomic::fromAtomic($obj->{'atomic'})
+        );
+    }
+
+    /**
+     * @return Atomic
+     */
+    public static function sample(): Atomic {
+        return new Atomic(
+         Atomic::sampleAtomic()
+        );
+    }
+}
+
+// This is an autogenerated file:AtomicCancel
+
+class AtomicCancel {
+    private int $atomicCancel; // json:atomic_cancel Required
+
+    /**
+     * @param int $atomicCancel
+     */
+    public function __construct(int $atomicCancel) {
+        $this->atomicCancel = $atomicCancel;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAtomicCancel(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAtomicCancel(): int {
+        if (AtomicCancel::validateAtomicCancel($this->atomicCancel))  {
+            return $this->atomicCancel; /*int*/
+        }
+        throw new Exception('never get to this AtomicCancel::atomicCancel');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomicCancel(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAtomicCancel(): int {
+        if (AtomicCancel::validateAtomicCancel($this->atomicCancel))  {
+            return $this->atomicCancel;
+        }
+        throw new Exception('never get to getAtomicCancel AtomicCancel::atomicCancel');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAtomicCancel(): int {
+        return 31; /*31:atomicCancel*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AtomicCancel::validateAtomicCancel($this->atomicCancel);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'atomic_cancel'} = $this->toAtomicCancel();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AtomicCancel
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AtomicCancel {
+        return new AtomicCancel(
+         AtomicCancel::fromAtomicCancel($obj->{'atomic_cancel'})
+        );
+    }
+
+    /**
+     * @return AtomicCancel
+     */
+    public static function sample(): AtomicCancel {
+        return new AtomicCancel(
+         AtomicCancel::sampleAtomicCancel()
+        );
+    }
+}
+
+// This is an autogenerated file:AtomicCommit
+
+class AtomicCommit {
+    private int $atomicCommit; // json:atomic_commit Required
+
+    /**
+     * @param int $atomicCommit
+     */
+    public function __construct(int $atomicCommit) {
+        $this->atomicCommit = $atomicCommit;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAtomicCommit(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAtomicCommit(): int {
+        if (AtomicCommit::validateAtomicCommit($this->atomicCommit))  {
+            return $this->atomicCommit; /*int*/
+        }
+        throw new Exception('never get to this AtomicCommit::atomicCommit');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomicCommit(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAtomicCommit(): int {
+        if (AtomicCommit::validateAtomicCommit($this->atomicCommit))  {
+            return $this->atomicCommit;
+        }
+        throw new Exception('never get to getAtomicCommit AtomicCommit::atomicCommit');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAtomicCommit(): int {
+        return 31; /*31:atomicCommit*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AtomicCommit::validateAtomicCommit($this->atomicCommit);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'atomic_commit'} = $this->toAtomicCommit();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AtomicCommit
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AtomicCommit {
+        return new AtomicCommit(
+         AtomicCommit::fromAtomicCommit($obj->{'atomic_commit'})
+        );
+    }
+
+    /**
+     * @return AtomicCommit
+     */
+    public static function sample(): AtomicCommit {
+        return new AtomicCommit(
+         AtomicCommit::sampleAtomicCommit()
+        );
+    }
+}
+
+// This is an autogenerated file:AtomicNoexcept
+
+class AtomicNoexcept {
+    private int $atomicNoexcept; // json:atomic_noexcept Required
+
+    /**
+     * @param int $atomicNoexcept
+     */
+    public function __construct(int $atomicNoexcept) {
+        $this->atomicNoexcept = $atomicNoexcept;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAtomicNoexcept(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAtomicNoexcept(): int {
+        if (AtomicNoexcept::validateAtomicNoexcept($this->atomicNoexcept))  {
+            return $this->atomicNoexcept; /*int*/
+        }
+        throw new Exception('never get to this AtomicNoexcept::atomicNoexcept');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAtomicNoexcept(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAtomicNoexcept(): int {
+        if (AtomicNoexcept::validateAtomicNoexcept($this->atomicNoexcept))  {
+            return $this->atomicNoexcept;
+        }
+        throw new Exception('never get to getAtomicNoexcept AtomicNoexcept::atomicNoexcept');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAtomicNoexcept(): int {
+        return 31; /*31:atomicNoexcept*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AtomicNoexcept::validateAtomicNoexcept($this->atomicNoexcept);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'atomic_noexcept'} = $this->toAtomicNoexcept();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AtomicNoexcept
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AtomicNoexcept {
+        return new AtomicNoexcept(
+         AtomicNoexcept::fromAtomicNoexcept($obj->{'atomic_noexcept'})
+        );
+    }
+
+    /**
+     * @return AtomicNoexcept
+     */
+    public static function sample(): AtomicNoexcept {
+        return new AtomicNoexcept(
+         AtomicNoexcept::sampleAtomicNoexcept()
+        );
+    }
+}
+
+// This is an autogenerated file:Auto
+
+class Auto {
+    private int $auto; // json:auto Required
+
+    /**
+     * @param int $auto
+     */
+    public function __construct(int $auto) {
+        $this->auto = $auto;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAuto(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAuto(): int {
+        if (Auto::validateAuto($this->auto))  {
+            return $this->auto; /*int*/
+        }
+        throw new Exception('never get to this Auto::auto');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAuto(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAuto(): int {
+        if (Auto::validateAuto($this->auto))  {
+            return $this->auto;
+        }
+        throw new Exception('never get to getAuto Auto::auto');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAuto(): int {
+        return 31; /*31:auto*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Auto::validateAuto($this->auto);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'auto'} = $this->toAuto();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Auto
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Auto {
+        return new Auto(
+         Auto::fromAuto($obj->{'auto'})
+        );
+    }
+
+    /**
+     * @return Auto
+     */
+    public static function sample(): Auto {
+        return new Auto(
+         Auto::sampleAuto()
+        );
+    }
+}
+
+// This is an autogenerated file:Await
+
+class Await {
+    private int $await; // json:await Required
+
+    /**
+     * @param int $await
+     */
+    public function __construct(int $await) {
+        $this->await = $await;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAwait(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAwait(): int {
+        if (Await::validateAwait($this->await))  {
+            return $this->await; /*int*/
+        }
+        throw new Exception('never get to this Await::await');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAwait(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAwait(): int {
+        if (Await::validateAwait($this->await))  {
+            return $this->await;
+        }
+        throw new Exception('never get to getAwait Await::await');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAwait(): int {
+        return 31; /*31:await*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Await::validateAwait($this->await);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'await'} = $this->toAwait();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Await
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Await {
+        return new Await(
+         Await::fromAwait($obj->{'await'})
+        );
+    }
+
+    /**
+     * @return Await
+     */
+    public static function sample(): Await {
+        return new Await(
+         Await::sampleAwait()
+        );
+    }
+}
+
+// This is an autogenerated file:Base
+
+class Base {
+    private int $base; // json:base Required
+
+    /**
+     * @param int $base
+     */
+    public function __construct(int $base) {
+        $this->base = $base;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBase(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBase(): int {
+        if (Base::validateBase($this->base))  {
+            return $this->base; /*int*/
+        }
+        throw new Exception('never get to this Base::base');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBase(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBase(): int {
+        if (Base::validateBase($this->base))  {
+            return $this->base;
+        }
+        throw new Exception('never get to getBase Base::base');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBase(): int {
+        return 31; /*31:base*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Base::validateBase($this->base);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'base'} = $this->toBase();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Base
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Base {
+        return new Base(
+         Base::fromBase($obj->{'base'})
+        );
+    }
+
+    /**
+     * @return Base
+     */
+    public static function sample(): Base {
+        return new Base(
+         Base::sampleBase()
+        );
+    }
+}
+
+// This is an autogenerated file:Bitand
+
+class Bitand {
+    private int $bitand; // json:bitand Required
+
+    /**
+     * @param int $bitand
+     */
+    public function __construct(int $bitand) {
+        $this->bitand = $bitand;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBitand(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBitand(): int {
+        if (Bitand::validateBitand($this->bitand))  {
+            return $this->bitand; /*int*/
+        }
+        throw new Exception('never get to this Bitand::bitand');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBitand(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBitand(): int {
+        if (Bitand::validateBitand($this->bitand))  {
+            return $this->bitand;
+        }
+        throw new Exception('never get to getBitand Bitand::bitand');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBitand(): int {
+        return 31; /*31:bitand*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Bitand::validateBitand($this->bitand);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'bitand'} = $this->toBitand();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Bitand
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Bitand {
+        return new Bitand(
+         Bitand::fromBitand($obj->{'bitand'})
+        );
+    }
+
+    /**
+     * @return Bitand
+     */
+    public static function sample(): Bitand {
+        return new Bitand(
+         Bitand::sampleBitand()
+        );
+    }
+}
+
+// This is an autogenerated file:Bitor
+
+class Bitor {
+    private int $bitor; // json:bitor Required
+
+    /**
+     * @param int $bitor
+     */
+    public function __construct(int $bitor) {
+        $this->bitor = $bitor;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBitor(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBitor(): int {
+        if (Bitor::validateBitor($this->bitor))  {
+            return $this->bitor; /*int*/
+        }
+        throw new Exception('never get to this Bitor::bitor');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBitor(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBitor(): int {
+        if (Bitor::validateBitor($this->bitor))  {
+            return $this->bitor;
+        }
+        throw new Exception('never get to getBitor Bitor::bitor');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBitor(): int {
+        return 31; /*31:bitor*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Bitor::validateBitor($this->bitor);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'bitor'} = $this->toBitor();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Bitor
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Bitor {
+        return new Bitor(
+         Bitor::fromBitor($obj->{'bitor'})
+        );
+    }
+
+    /**
+     * @return Bitor
+     */
+    public static function sample(): Bitor {
+        return new Bitor(
+         Bitor::sampleBitor()
+        );
+    }
+}
+
+// This is an autogenerated file:BOOLClass
+
+class BOOLClass {
+    private int $bool; // json:BOOL Required
+
+    /**
+     * @param int $bool
+     */
+    public function __construct(int $bool) {
+        $this->bool = $bool;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBool(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBool(): int {
+        if (BOOLClass::validateBool($this->bool))  {
+            return $this->bool; /*int*/
+        }
+        throw new Exception('never get to this BOOLClass::bool');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBool(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBool(): int {
+        if (BOOLClass::validateBool($this->bool))  {
+            return $this->bool;
+        }
+        throw new Exception('never get to getBool BOOLClass::bool');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBool(): int {
+        return 31; /*31:bool*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return BOOLClass::validateBool($this->bool);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'BOOL'} = $this->toBool();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return BOOLClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): BOOLClass {
+        return new BOOLClass(
+         BOOLClass::fromBool($obj->{'BOOL'})
+        );
+    }
+
+    /**
+     * @return BOOLClass
+     */
+    public static function sample(): BOOLClass {
+        return new BOOLClass(
+         BOOLClass::sampleBool()
+        );
+    }
+}
+
+// This is an autogenerated file:Boolean
+
+class Boolean {
+    private int $boolean; // json:boolean Required
+
+    /**
+     * @param int $boolean
+     */
+    public function __construct(int $boolean) {
+        $this->boolean = $boolean;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBoolean(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBoolean(): int {
+        if (Boolean::validateBoolean($this->boolean))  {
+            return $this->boolean; /*int*/
+        }
+        throw new Exception('never get to this Boolean::boolean');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBoolean(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBoolean(): int {
+        if (Boolean::validateBoolean($this->boolean))  {
+            return $this->boolean;
+        }
+        throw new Exception('never get to getBoolean Boolean::boolean');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBoolean(): int {
+        return 31; /*31:boolean*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Boolean::validateBoolean($this->boolean);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'boolean'} = $this->toBoolean();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Boolean
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Boolean {
+        return new Boolean(
+         Boolean::fromBoolean($obj->{'boolean'})
+        );
+    }
+
+    /**
+     * @return Boolean
+     */
+    public static function sample(): Boolean {
+        return new Boolean(
+         Boolean::sampleBoolean()
+        );
+    }
+}
+
+// This is an autogenerated file:BreakClass
+
+class BreakClass {
+    private int $break; // json:break Required
+
+    /**
+     * @param int $break
+     */
+    public function __construct(int $break) {
+        $this->break = $break;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBreak(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBreak(): int {
+        if (BreakClass::validateBreak($this->break))  {
+            return $this->break; /*int*/
+        }
+        throw new Exception('never get to this BreakClass::break');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBreak(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBreak(): int {
+        if (BreakClass::validateBreak($this->break))  {
+            return $this->break;
+        }
+        throw new Exception('never get to getBreak BreakClass::break');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBreak(): int {
+        return 31; /*31:break*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return BreakClass::validateBreak($this->break);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'break'} = $this->toBreak();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return BreakClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): BreakClass {
+        return new BreakClass(
+         BreakClass::fromBreak($obj->{'break'})
+        );
+    }
+
+    /**
+     * @return BreakClass
+     */
+    public static function sample(): BreakClass {
+        return new BreakClass(
+         BreakClass::sampleBreak()
+        );
+    }
+}
+
+// This is an autogenerated file:Bycopy
+
+class Bycopy {
+    private int $bycopy; // json:bycopy Required
+
+    /**
+     * @param int $bycopy
+     */
+    public function __construct(int $bycopy) {
+        $this->bycopy = $bycopy;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBycopy(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBycopy(): int {
+        if (Bycopy::validateBycopy($this->bycopy))  {
+            return $this->bycopy; /*int*/
+        }
+        throw new Exception('never get to this Bycopy::bycopy');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBycopy(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBycopy(): int {
+        if (Bycopy::validateBycopy($this->bycopy))  {
+            return $this->bycopy;
+        }
+        throw new Exception('never get to getBycopy Bycopy::bycopy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBycopy(): int {
+        return 31; /*31:bycopy*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Bycopy::validateBycopy($this->bycopy);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'bycopy'} = $this->toBycopy();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Bycopy
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Bycopy {
+        return new Bycopy(
+         Bycopy::fromBycopy($obj->{'bycopy'})
+        );
+    }
+
+    /**
+     * @return Bycopy
+     */
+    public static function sample(): Bycopy {
+        return new Bycopy(
+         Bycopy::sampleBycopy()
+        );
+    }
+}
+
+// This is an autogenerated file:Byref
+
+class Byref {
+    private int $byref; // json:byref Required
+
+    /**
+     * @param int $byref
+     */
+    public function __construct(int $byref) {
+        $this->byref = $byref;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromByref(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toByref(): int {
+        if (Byref::validateByref($this->byref))  {
+            return $this->byref; /*int*/
+        }
+        throw new Exception('never get to this Byref::byref');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateByref(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getByref(): int {
+        if (Byref::validateByref($this->byref))  {
+            return $this->byref;
+        }
+        throw new Exception('never get to getByref Byref::byref');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleByref(): int {
+        return 31; /*31:byref*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Byref::validateByref($this->byref);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'byref'} = $this->toByref();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Byref
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Byref {
+        return new Byref(
+         Byref::fromByref($obj->{'byref'})
+        );
+    }
+
+    /**
+     * @return Byref
+     */
+    public static function sample(): Byref {
+        return new Byref(
+         Byref::sampleByref()
+        );
+    }
+}
+
+// This is an autogenerated file:Byte
+
+class Byte {
+    private int $byte; // json:byte Required
+
+    /**
+     * @param int $byte
+     */
+    public function __construct(int $byte) {
+        $this->byte = $byte;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromByte(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toByte(): int {
+        if (Byte::validateByte($this->byte))  {
+            return $this->byte; /*int*/
+        }
+        throw new Exception('never get to this Byte::byte');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateByte(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getByte(): int {
+        if (Byte::validateByte($this->byte))  {
+            return $this->byte;
+        }
+        throw new Exception('never get to getByte Byte::byte');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleByte(): int {
+        return 31; /*31:byte*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Byte::validateByte($this->byte);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'byte'} = $this->toByte();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Byte
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Byte {
+        return new Byte(
+         Byte::fromByte($obj->{'byte'})
+        );
+    }
+
+    /**
+     * @return Byte
+     */
+    public static function sample(): Byte {
+        return new Byte(
+         Byte::sampleByte()
+        );
+    }
+}
+
+// This is an autogenerated file:CaseClass
+
+class CaseClass {
+    private int $case; // json:case Required
+
+    /**
+     * @param int $case
+     */
+    public function __construct(int $case) {
+        $this->case = $case;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCase(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCase(): int {
+        if (CaseClass::validateCase($this->case))  {
+            return $this->case; /*int*/
+        }
+        throw new Exception('never get to this CaseClass::case');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCase(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCase(): int {
+        if (CaseClass::validateCase($this->case))  {
+            return $this->case;
+        }
+        throw new Exception('never get to getCase CaseClass::case');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCase(): int {
+        return 31; /*31:case*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CaseClass::validateCase($this->case);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'case'} = $this->toCase();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CaseClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CaseClass {
+        return new CaseClass(
+         CaseClass::fromCase($obj->{'case'})
+        );
+    }
+
+    /**
+     * @return CaseClass
+     */
+    public static function sample(): CaseClass {
+        return new CaseClass(
+         CaseClass::sampleCase()
+        );
+    }
+}
+
+// This is an autogenerated file:CatchClass
+
+class CatchClass {
+    private int $catch; // json:catch Required
+
+    /**
+     * @param int $catch
+     */
+    public function __construct(int $catch) {
+        $this->catch = $catch;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCatch(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCatch(): int {
+        if (CatchClass::validateCatch($this->catch))  {
+            return $this->catch; /*int*/
+        }
+        throw new Exception('never get to this CatchClass::catch');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCatch(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCatch(): int {
+        if (CatchClass::validateCatch($this->catch))  {
+            return $this->catch;
+        }
+        throw new Exception('never get to getCatch CatchClass::catch');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCatch(): int {
+        return 31; /*31:catch*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CatchClass::validateCatch($this->catch);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'catch'} = $this->toCatch();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CatchClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CatchClass {
+        return new CatchClass(
+         CatchClass::fromCatch($obj->{'catch'})
+        );
+    }
+
+    /**
+     * @return CatchClass
+     */
+    public static function sample(): CatchClass {
+        return new CatchClass(
+         CatchClass::sampleCatch()
+        );
+    }
+}
+
+// This is an autogenerated file:Chan
+
+class Chan {
+    private int $chan; // json:chan Required
+
+    /**
+     * @param int $chan
+     */
+    public function __construct(int $chan) {
+        $this->chan = $chan;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromChan(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toChan(): int {
+        if (Chan::validateChan($this->chan))  {
+            return $this->chan; /*int*/
+        }
+        throw new Exception('never get to this Chan::chan');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChan(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getChan(): int {
+        if (Chan::validateChan($this->chan))  {
+            return $this->chan;
+        }
+        throw new Exception('never get to getChan Chan::chan');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleChan(): int {
+        return 31; /*31:chan*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Chan::validateChan($this->chan);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'chan'} = $this->toChan();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Chan
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Chan {
+        return new Chan(
+         Chan::fromChan($obj->{'chan'})
+        );
+    }
+
+    /**
+     * @return Chan
+     */
+    public static function sample(): Chan {
+        return new Chan(
+         Chan::sampleChan()
+        );
+    }
+}
+
+// This is an autogenerated file:Char
+
+class Char {
+    private int $char; // json:char Required
+
+    /**
+     * @param int $char
+     */
+    public function __construct(int $char) {
+        $this->char = $char;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromChar(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toChar(): int {
+        if (Char::validateChar($this->char))  {
+            return $this->char; /*int*/
+        }
+        throw new Exception('never get to this Char::char');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChar(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getChar(): int {
+        if (Char::validateChar($this->char))  {
+            return $this->char;
+        }
+        throw new Exception('never get to getChar Char::char');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleChar(): int {
+        return 31; /*31:char*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Char::validateChar($this->char);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'char'} = $this->toChar();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Char
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Char {
+        return new Char(
+         Char::fromChar($obj->{'char'})
+        );
+    }
+
+    /**
+     * @return Char
+     */
+    public static function sample(): Char {
+        return new Char(
+         Char::sampleChar()
+        );
+    }
+}
+
+// This is an autogenerated file:Char16T
+
+class Char16T {
+    private int $char16T; // json:char16_t Required
+
+    /**
+     * @param int $char16T
+     */
+    public function __construct(int $char16T) {
+        $this->char16T = $char16T;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromChar16T(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toChar16T(): int {
+        if (Char16T::validateChar16T($this->char16T))  {
+            return $this->char16T; /*int*/
+        }
+        throw new Exception('never get to this Char16T::char16T');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChar16T(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getChar16T(): int {
+        if (Char16T::validateChar16T($this->char16T))  {
+            return $this->char16T;
+        }
+        throw new Exception('never get to getChar16T Char16T::char16T');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleChar16T(): int {
+        return 31; /*31:char16T*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Char16T::validateChar16T($this->char16T);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'char16_t'} = $this->toChar16T();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Char16T
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Char16T {
+        return new Char16T(
+         Char16T::fromChar16T($obj->{'char16_t'})
+        );
+    }
+
+    /**
+     * @return Char16T
+     */
+    public static function sample(): Char16T {
+        return new Char16T(
+         Char16T::sampleChar16T()
+        );
+    }
+}
+
+// This is an autogenerated file:Char32T
+
+class Char32T {
+    private int $char32T; // json:char32_t Required
+
+    /**
+     * @param int $char32T
+     */
+    public function __construct(int $char32T) {
+        $this->char32T = $char32T;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromChar32T(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toChar32T(): int {
+        if (Char32T::validateChar32T($this->char32T))  {
+            return $this->char32T; /*int*/
+        }
+        throw new Exception('never get to this Char32T::char32T');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChar32T(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getChar32T(): int {
+        if (Char32T::validateChar32T($this->char32T))  {
+            return $this->char32T;
+        }
+        throw new Exception('never get to getChar32T Char32T::char32T');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleChar32T(): int {
+        return 31; /*31:char32T*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Char32T::validateChar32T($this->char32T);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'char32_t'} = $this->toChar32T();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Char32T
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Char32T {
+        return new Char32T(
+         Char32T::fromChar32T($obj->{'char32_t'})
+        );
+    }
+
+    /**
+     * @return Char32T
+     */
+    public static function sample(): Char32T {
+        return new Char32T(
+         Char32T::sampleChar32T()
+        );
+    }
+}
+
+// This is an autogenerated file:Checked
+
+class Checked {
+    private int $checked; // json:checked Required
+
+    /**
+     * @param int $checked
+     */
+    public function __construct(int $checked) {
+        $this->checked = $checked;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromChecked(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toChecked(): int {
+        if (Checked::validateChecked($this->checked))  {
+            return $this->checked; /*int*/
+        }
+        throw new Exception('never get to this Checked::checked');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateChecked(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getChecked(): int {
+        if (Checked::validateChecked($this->checked))  {
+            return $this->checked;
+        }
+        throw new Exception('never get to getChecked Checked::checked');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleChecked(): int {
+        return 31; /*31:checked*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Checked::validateChecked($this->checked);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'checked'} = $this->toChecked();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Checked
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Checked {
+        return new Checked(
+         Checked::fromChecked($obj->{'checked'})
+        );
+    }
+
+    /**
+     * @return Checked
+     */
+    public static function sample(): Checked {
+        return new Checked(
+         Checked::sampleChecked()
+        );
+    }
+}
+
+// This is an autogenerated file:ClassClass
+
+class ClassClass {
+    private int $class; // json:Class Required
+
+    /**
+     * @param int $class
+     */
+    public function __construct(int $class) {
+        $this->class = $class;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromClass(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toClass(): int {
+        if (ClassClass::validateClass($this->class))  {
+            return $this->class; /*int*/
+        }
+        throw new Exception('never get to this ClassClass::class');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateClass(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getClass(): int {
+        if (ClassClass::validateClass($this->class))  {
+            return $this->class;
+        }
+        throw new Exception('never get to getClass ClassClass::class');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleClass(): int {
+        return 31; /*31:class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ClassClass::validateClass($this->class);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Class'} = $this->toClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ClassClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ClassClass {
+        return new ClassClass(
+         ClassClass::fromClass($obj->{'Class'})
+        );
+    }
+
+    /**
+     * @return ClassClass
+     */
+    public static function sample(): ClassClass {
+        return new ClassClass(
+         ClassClass::sampleClass()
+        );
+    }
+}
+
+// This is an autogenerated file:CloneClass
+
+class CloneClass {
+    private int $clone; // json:clone Required
+
+    /**
+     * @param int $clone
+     */
+    public function __construct(int $clone) {
+        $this->clone = $clone;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromClone(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toClone(): int {
+        if (CloneClass::validateClone($this->clone))  {
+            return $this->clone; /*int*/
+        }
+        throw new Exception('never get to this CloneClass::clone');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateClone(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getClone(): int {
+        if (CloneClass::validateClone($this->clone))  {
+            return $this->clone;
+        }
+        throw new Exception('never get to getClone CloneClass::clone');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleClone(): int {
+        return 31; /*31:clone*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CloneClass::validateClone($this->clone);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'clone'} = $this->toClone();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CloneClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CloneClass {
+        return new CloneClass(
+         CloneClass::fromClone($obj->{'clone'})
+        );
+    }
+
+    /**
+     * @return CloneClass
+     */
+    public static function sample(): CloneClass {
+        return new CloneClass(
+         CloneClass::sampleClone()
+        );
+    }
+}
+
+// This is an autogenerated file:CoAwait
+
+class CoAwait {
+    private int $coAwait; // json:co_await Required
+
+    /**
+     * @param int $coAwait
+     */
+    public function __construct(int $coAwait) {
+        $this->coAwait = $coAwait;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCoAwait(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCoAwait(): int {
+        if (CoAwait::validateCoAwait($this->coAwait))  {
+            return $this->coAwait; /*int*/
+        }
+        throw new Exception('never get to this CoAwait::coAwait');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCoAwait(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCoAwait(): int {
+        if (CoAwait::validateCoAwait($this->coAwait))  {
+            return $this->coAwait;
+        }
+        throw new Exception('never get to getCoAwait CoAwait::coAwait');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCoAwait(): int {
+        return 31; /*31:coAwait*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CoAwait::validateCoAwait($this->coAwait);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'co_await'} = $this->toCoAwait();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CoAwait
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CoAwait {
+        return new CoAwait(
+         CoAwait::fromCoAwait($obj->{'co_await'})
+        );
+    }
+
+    /**
+     * @return CoAwait
+     */
+    public static function sample(): CoAwait {
+        return new CoAwait(
+         CoAwait::sampleCoAwait()
+        );
+    }
+}
+
+// This is an autogenerated file:CoReturn
+
+class CoReturn {
+    private int $coReturn; // json:co_return Required
+
+    /**
+     * @param int $coReturn
+     */
+    public function __construct(int $coReturn) {
+        $this->coReturn = $coReturn;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCoReturn(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCoReturn(): int {
+        if (CoReturn::validateCoReturn($this->coReturn))  {
+            return $this->coReturn; /*int*/
+        }
+        throw new Exception('never get to this CoReturn::coReturn');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCoReturn(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCoReturn(): int {
+        if (CoReturn::validateCoReturn($this->coReturn))  {
+            return $this->coReturn;
+        }
+        throw new Exception('never get to getCoReturn CoReturn::coReturn');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCoReturn(): int {
+        return 31; /*31:coReturn*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CoReturn::validateCoReturn($this->coReturn);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'co_return'} = $this->toCoReturn();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CoReturn
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CoReturn {
+        return new CoReturn(
+         CoReturn::fromCoReturn($obj->{'co_return'})
+        );
+    }
+
+    /**
+     * @return CoReturn
+     */
+    public static function sample(): CoReturn {
+        return new CoReturn(
+         CoReturn::sampleCoReturn()
+        );
+    }
+}
+
+// This is an autogenerated file:CoYield
+
+class CoYield {
+    private int $coYield; // json:co_yield Required
+
+    /**
+     * @param int $coYield
+     */
+    public function __construct(int $coYield) {
+        $this->coYield = $coYield;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCoYield(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCoYield(): int {
+        if (CoYield::validateCoYield($this->coYield))  {
+            return $this->coYield; /*int*/
+        }
+        throw new Exception('never get to this CoYield::coYield');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCoYield(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCoYield(): int {
+        if (CoYield::validateCoYield($this->coYield))  {
+            return $this->coYield;
+        }
+        throw new Exception('never get to getCoYield CoYield::coYield');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCoYield(): int {
+        return 31; /*31:coYield*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CoYield::validateCoYield($this->coYield);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'co_yield'} = $this->toCoYield();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CoYield
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CoYield {
+        return new CoYield(
+         CoYield::fromCoYield($obj->{'co_yield'})
+        );
+    }
+
+    /**
+     * @return CoYield
+     */
+    public static function sample(): CoYield {
+        return new CoYield(
+         CoYield::sampleCoYield()
+        );
+    }
+}
+
+// This is an autogenerated file:Compl
+
+class Compl {
+    private int $compl; // json:compl Required
+
+    /**
+     * @param int $compl
+     */
+    public function __construct(int $compl) {
+        $this->compl = $compl;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCompl(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCompl(): int {
+        if (Compl::validateCompl($this->compl))  {
+            return $this->compl; /*int*/
+        }
+        throw new Exception('never get to this Compl::compl');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCompl(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCompl(): int {
+        if (Compl::validateCompl($this->compl))  {
+            return $this->compl;
+        }
+        throw new Exception('never get to getCompl Compl::compl');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCompl(): int {
+        return 31; /*31:compl*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Compl::validateCompl($this->compl);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'compl'} = $this->toCompl();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Compl
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Compl {
+        return new Compl(
+         Compl::fromCompl($obj->{'compl'})
+        );
+    }
+
+    /**
+     * @return Compl
+     */
+    public static function sample(): Compl {
+        return new Compl(
+         Compl::sampleCompl()
+        );
+    }
+}
+
+// This is an autogenerated file:Complex
+
+class Complex {
+    private int $complex; // json:_Complex Required
+
+    /**
+     * @param int $complex
+     */
+    public function __construct(int $complex) {
+        $this->complex = $complex;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromComplex(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toComplex(): int {
+        if (Complex::validateComplex($this->complex))  {
+            return $this->complex; /*int*/
+        }
+        throw new Exception('never get to this Complex::complex');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateComplex(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getComplex(): int {
+        if (Complex::validateComplex($this->complex))  {
+            return $this->complex;
+        }
+        throw new Exception('never get to getComplex Complex::complex');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleComplex(): int {
+        return 31; /*31:complex*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Complex::validateComplex($this->complex);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'_Complex'} = $this->toComplex();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Complex
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Complex {
+        return new Complex(
+         Complex::fromComplex($obj->{'_Complex'})
+        );
+    }
+
+    /**
+     * @return Complex
+     */
+    public static function sample(): Complex {
+        return new Complex(
+         Complex::sampleComplex()
+        );
+    }
+}
+
+// This is an autogenerated file:Concept
+
+class Concept {
+    private int $concept; // json:concept Required
+
+    /**
+     * @param int $concept
+     */
+    public function __construct(int $concept) {
+        $this->concept = $concept;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConcept(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConcept(): int {
+        if (Concept::validateConcept($this->concept))  {
+            return $this->concept; /*int*/
+        }
+        throw new Exception('never get to this Concept::concept');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConcept(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConcept(): int {
+        if (Concept::validateConcept($this->concept))  {
+            return $this->concept;
+        }
+        throw new Exception('never get to getConcept Concept::concept');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConcept(): int {
+        return 31; /*31:concept*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Concept::validateConcept($this->concept);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'concept'} = $this->toConcept();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Concept
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Concept {
+        return new Concept(
+         Concept::fromConcept($obj->{'concept'})
+        );
+    }
+
+    /**
+     * @return Concept
+     */
+    public static function sample(): Concept {
+        return new Concept(
+         Concept::sampleConcept()
+        );
+    }
+}
+
+// This is an autogenerated file:Console
+
+class Console {
+    private int $console; // json:console Required
+
+    /**
+     * @param int $console
+     */
+    public function __construct(int $console) {
+        $this->console = $console;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConsole(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConsole(): int {
+        if (Console::validateConsole($this->console))  {
+            return $this->console; /*int*/
+        }
+        throw new Exception('never get to this Console::console');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConsole(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConsole(): int {
+        if (Console::validateConsole($this->console))  {
+            return $this->console;
+        }
+        throw new Exception('never get to getConsole Console::console');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConsole(): int {
+        return 31; /*31:console*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Console::validateConsole($this->console);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'console'} = $this->toConsole();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Console
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Console {
+        return new Console(
+         Console::fromConsole($obj->{'console'})
+        );
+    }
+
+    /**
+     * @return Console
+     */
+    public static function sample(): Console {
+        return new Console(
+         Console::sampleConsole()
+        );
+    }
+}
+
+// This is an autogenerated file:ConstClass
+
+class ConstClass {
+    private int $const; // json:const Required
+
+    /**
+     * @param int $const
+     */
+    public function __construct(int $const) {
+        $this->const = $const;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConst(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConst(): int {
+        if (ConstClass::validateConst($this->const))  {
+            return $this->const; /*int*/
+        }
+        throw new Exception('never get to this ConstClass::const');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConst(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConst(): int {
+        if (ConstClass::validateConst($this->const))  {
+            return $this->const;
+        }
+        throw new Exception('never get to getConst ConstClass::const');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConst(): int {
+        return 31; /*31:const*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ConstClass::validateConst($this->const);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'const'} = $this->toConst();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ConstClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ConstClass {
+        return new ConstClass(
+         ConstClass::fromConst($obj->{'const'})
+        );
+    }
+
+    /**
+     * @return ConstClass
+     */
+    public static function sample(): ConstClass {
+        return new ConstClass(
+         ConstClass::sampleConst()
+        );
+    }
+}
+
+// This is an autogenerated file:ConstCast
+
+class ConstCast {
+    private int $constCast; // json:const_cast Required
+
+    /**
+     * @param int $constCast
+     */
+    public function __construct(int $constCast) {
+        $this->constCast = $constCast;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConstCast(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConstCast(): int {
+        if (ConstCast::validateConstCast($this->constCast))  {
+            return $this->constCast; /*int*/
+        }
+        throw new Exception('never get to this ConstCast::constCast');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConstCast(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConstCast(): int {
+        if (ConstCast::validateConstCast($this->constCast))  {
+            return $this->constCast;
+        }
+        throw new Exception('never get to getConstCast ConstCast::constCast');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConstCast(): int {
+        return 31; /*31:constCast*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ConstCast::validateConstCast($this->constCast);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'const_cast'} = $this->toConstCast();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ConstCast
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ConstCast {
+        return new ConstCast(
+         ConstCast::fromConstCast($obj->{'const_cast'})
+        );
+    }
+
+    /**
+     * @return ConstCast
+     */
+    public static function sample(): ConstCast {
+        return new ConstCast(
+         ConstCast::sampleConstCast()
+        );
+    }
+}
+
+// This is an autogenerated file:Constexpr
+
+class Constexpr {
+    private int $constexpr; // json:constexpr Required
+
+    /**
+     * @param int $constexpr
+     */
+    public function __construct(int $constexpr) {
+        $this->constexpr = $constexpr;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConstexpr(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConstexpr(): int {
+        if (Constexpr::validateConstexpr($this->constexpr))  {
+            return $this->constexpr; /*int*/
+        }
+        throw new Exception('never get to this Constexpr::constexpr');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConstexpr(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConstexpr(): int {
+        if (Constexpr::validateConstexpr($this->constexpr))  {
+            return $this->constexpr;
+        }
+        throw new Exception('never get to getConstexpr Constexpr::constexpr');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConstexpr(): int {
+        return 31; /*31:constexpr*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Constexpr::validateConstexpr($this->constexpr);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'constexpr'} = $this->toConstexpr();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Constexpr
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Constexpr {
+        return new Constexpr(
+         Constexpr::fromConstexpr($obj->{'constexpr'})
+        );
+    }
+
+    /**
+     * @return Constexpr
+     */
+    public static function sample(): Constexpr {
+        return new Constexpr(
+         Constexpr::sampleConstexpr()
+        );
+    }
+}
+
+// This is an autogenerated file:Constructor
+
+class Constructor {
+    private int $constructor; // json:constructor Required
+
+    /**
+     * @param int $constructor
+     */
+    public function __construct(int $constructor) {
+        $this->constructor = $constructor;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConstructor(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConstructor(): int {
+        if (Constructor::validateConstructor($this->constructor))  {
+            return $this->constructor; /*int*/
+        }
+        throw new Exception('never get to this Constructor::constructor');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConstructor(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConstructor(): int {
+        if (Constructor::validateConstructor($this->constructor))  {
+            return $this->constructor;
+        }
+        throw new Exception('never get to getConstructor Constructor::constructor');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConstructor(): int {
+        return 31; /*31:constructor*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Constructor::validateConstructor($this->constructor);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'constructor'} = $this->toConstructor();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Constructor
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Constructor {
+        return new Constructor(
+         Constructor::fromConstructor($obj->{'constructor'})
+        );
+    }
+
+    /**
+     * @return Constructor
+     */
+    public static function sample(): Constructor {
+        return new Constructor(
+         Constructor::sampleConstructor()
+        );
+    }
+}
+
+// This is an autogenerated file:ContinueClass
+
+class ContinueClass {
+    private int $continue; // json:continue Required
+
+    /**
+     * @param int $continue
+     */
+    public function __construct(int $continue) {
+        $this->continue = $continue;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromContinue(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toContinue(): int {
+        if (ContinueClass::validateContinue($this->continue))  {
+            return $this->continue; /*int*/
+        }
+        throw new Exception('never get to this ContinueClass::continue');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateContinue(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getContinue(): int {
+        if (ContinueClass::validateContinue($this->continue))  {
+            return $this->continue;
+        }
+        throw new Exception('never get to getContinue ContinueClass::continue');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleContinue(): int {
+        return 31; /*31:continue*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ContinueClass::validateContinue($this->continue);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'continue'} = $this->toContinue();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ContinueClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ContinueClass {
+        return new ContinueClass(
+         ContinueClass::fromContinue($obj->{'continue'})
+        );
+    }
+
+    /**
+     * @return ContinueClass
+     */
+    public static function sample(): ContinueClass {
+        return new ContinueClass(
+         ContinueClass::sampleContinue()
+        );
+    }
+}
+
+// This is an autogenerated file:Convenience
+
+class Convenience {
+    private int $convenience; // json:convenience Required
+
+    /**
+     * @param int $convenience
+     */
+    public function __construct(int $convenience) {
+        $this->convenience = $convenience;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConvenience(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConvenience(): int {
+        if (Convenience::validateConvenience($this->convenience))  {
+            return $this->convenience; /*int*/
+        }
+        throw new Exception('never get to this Convenience::convenience');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConvenience(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConvenience(): int {
+        if (Convenience::validateConvenience($this->convenience))  {
+            return $this->convenience;
+        }
+        throw new Exception('never get to getConvenience Convenience::convenience');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConvenience(): int {
+        return 31; /*31:convenience*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Convenience::validateConvenience($this->convenience);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'convenience'} = $this->toConvenience();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Convenience
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Convenience {
+        return new Convenience(
+         Convenience::fromConvenience($obj->{'convenience'})
+        );
+    }
+
+    /**
+     * @return Convenience
+     */
+    public static function sample(): Convenience {
+        return new Convenience(
+         Convenience::sampleConvenience()
+        );
+    }
+}
+
+// This is an autogenerated file:Convert
+
+class Convert {
+    private int $convert; // json:convert Required
+
+    /**
+     * @param int $convert
+     */
+    public function __construct(int $convert) {
+        $this->convert = $convert;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConvert(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConvert(): int {
+        if (Convert::validateConvert($this->convert))  {
+            return $this->convert; /*int*/
+        }
+        throw new Exception('never get to this Convert::convert');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConvert(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConvert(): int {
+        if (Convert::validateConvert($this->convert))  {
+            return $this->convert;
+        }
+        throw new Exception('never get to getConvert Convert::convert');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConvert(): int {
+        return 31; /*31:convert*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Convert::validateConvert($this->convert);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'convert'} = $this->toConvert();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Convert
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Convert {
+        return new Convert(
+         Convert::fromConvert($obj->{'convert'})
+        );
+    }
+
+    /**
+     * @return Convert
+     */
+    public static function sample(): Convert {
+        return new Convert(
+         Convert::sampleConvert()
+        );
+    }
+}
+
+// This is an autogenerated file:ConverterClass
+
+class ConverterClass {
+    private int $converter; // json:converter Required
+
+    /**
+     * @param int $converter
+     */
+    public function __construct(int $converter) {
+        $this->converter = $converter;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromConverter(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toConverter(): int {
+        if (ConverterClass::validateConverter($this->converter))  {
+            return $this->converter; /*int*/
+        }
+        throw new Exception('never get to this ConverterClass::converter');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateConverter(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getConverter(): int {
+        if (ConverterClass::validateConverter($this->converter))  {
+            return $this->converter;
+        }
+        throw new Exception('never get to getConverter ConverterClass::converter');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleConverter(): int {
+        return 31; /*31:converter*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ConverterClass::validateConverter($this->converter);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'converter'} = $this->toConverter();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ConverterClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ConverterClass {
+        return new ConverterClass(
+         ConverterClass::fromConverter($obj->{'converter'})
+        );
+    }
+
+    /**
+     * @return ConverterClass
+     */
+    public static function sample(): ConverterClass {
+        return new ConverterClass(
+         ConverterClass::sampleConverter()
+        );
+    }
+}
+
+// This is an autogenerated file:Date
+
+class Date {
+    private int $date; // json:date Required
+
+    /**
+     * @param int $date
+     */
+    public function __construct(int $date) {
+        $this->date = $date;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDate(): int {
+        if (Date::validateDate($this->date))  {
+            return $this->date; /*int*/
+        }
+        throw new Exception('never get to this Date::date');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDate(): int {
+        if (Date::validateDate($this->date))  {
+            return $this->date;
+        }
+        throw new Exception('never get to getDate Date::date');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDate(): int {
+        return 31; /*31:date*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Date::validateDate($this->date);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'date'} = $this->toDate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Date
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Date {
+        return new Date(
+         Date::fromDate($obj->{'date'})
+        );
+    }
+
+    /**
+     * @return Date
+     */
+    public static function sample(): Date {
+        return new Date(
+         Date::sampleDate()
+        );
+    }
+}
+
+// This is an autogenerated file:DateParseHandling
+
+class DateParseHandling {
+    private int $dateParseHandling; // json:date_parse_handling Required
+
+    /**
+     * @param int $dateParseHandling
+     */
+    public function __construct(int $dateParseHandling) {
+        $this->dateParseHandling = $dateParseHandling;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDateParseHandling(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDateParseHandling(): int {
+        if (DateParseHandling::validateDateParseHandling($this->dateParseHandling))  {
+            return $this->dateParseHandling; /*int*/
+        }
+        throw new Exception('never get to this DateParseHandling::dateParseHandling');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDateParseHandling(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDateParseHandling(): int {
+        if (DateParseHandling::validateDateParseHandling($this->dateParseHandling))  {
+            return $this->dateParseHandling;
+        }
+        throw new Exception('never get to getDateParseHandling DateParseHandling::dateParseHandling');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDateParseHandling(): int {
+        return 31; /*31:dateParseHandling*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DateParseHandling::validateDateParseHandling($this->dateParseHandling);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'date_parse_handling'} = $this->toDateParseHandling();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DateParseHandling
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DateParseHandling {
+        return new DateParseHandling(
+         DateParseHandling::fromDateParseHandling($obj->{'date_parse_handling'})
+        );
+    }
+
+    /**
+     * @return DateParseHandling
+     */
+    public static function sample(): DateParseHandling {
+        return new DateParseHandling(
+         DateParseHandling::sampleDateParseHandling()
+        );
+    }
+}
+
+// This is an autogenerated file:Debugger
+
+class Debugger {
+    private int $debugger; // json:debugger Required
+
+    /**
+     * @param int $debugger
+     */
+    public function __construct(int $debugger) {
+        $this->debugger = $debugger;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDebugger(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDebugger(): int {
+        if (Debugger::validateDebugger($this->debugger))  {
+            return $this->debugger; /*int*/
+        }
+        throw new Exception('never get to this Debugger::debugger');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDebugger(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDebugger(): int {
+        if (Debugger::validateDebugger($this->debugger))  {
+            return $this->debugger;
+        }
+        throw new Exception('never get to getDebugger Debugger::debugger');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDebugger(): int {
+        return 31; /*31:debugger*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Debugger::validateDebugger($this->debugger);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'debugger'} = $this->toDebugger();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Debugger
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Debugger {
+        return new Debugger(
+         Debugger::fromDebugger($obj->{'debugger'})
+        );
+    }
+
+    /**
+     * @return Debugger
+     */
+    public static function sample(): Debugger {
+        return new Debugger(
+         Debugger::sampleDebugger()
+        );
+    }
+}
+
+// This is an autogenerated file:Decimal
+
+class Decimal {
+    private int $decimal; // json:decimal Required
+
+    /**
+     * @param int $decimal
+     */
+    public function __construct(int $decimal) {
+        $this->decimal = $decimal;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDecimal(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDecimal(): int {
+        if (Decimal::validateDecimal($this->decimal))  {
+            return $this->decimal; /*int*/
+        }
+        throw new Exception('never get to this Decimal::decimal');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDecimal(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDecimal(): int {
+        if (Decimal::validateDecimal($this->decimal))  {
+            return $this->decimal;
+        }
+        throw new Exception('never get to getDecimal Decimal::decimal');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDecimal(): int {
+        return 31; /*31:decimal*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Decimal::validateDecimal($this->decimal);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'decimal'} = $this->toDecimal();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Decimal
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Decimal {
+        return new Decimal(
+         Decimal::fromDecimal($obj->{'decimal'})
+        );
+    }
+
+    /**
+     * @return Decimal
+     */
+    public static function sample(): Decimal {
+        return new Decimal(
+         Decimal::sampleDecimal()
+        );
+    }
+}
+
+// This is an autogenerated file:DeclareClass
+
+class DeclareClass {
+    private int $declare; // json:declare Required
+
+    /**
+     * @param int $declare
+     */
+    public function __construct(int $declare) {
+        $this->declare = $declare;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDeclare(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDeclare(): int {
+        if (DeclareClass::validateDeclare($this->declare))  {
+            return $this->declare; /*int*/
+        }
+        throw new Exception('never get to this DeclareClass::declare');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeclare(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDeclare(): int {
+        if (DeclareClass::validateDeclare($this->declare))  {
+            return $this->declare;
+        }
+        throw new Exception('never get to getDeclare DeclareClass::declare');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDeclare(): int {
+        return 31; /*31:declare*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DeclareClass::validateDeclare($this->declare);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'declare'} = $this->toDeclare();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DeclareClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DeclareClass {
+        return new DeclareClass(
+         DeclareClass::fromDeclare($obj->{'declare'})
+        );
+    }
+
+    /**
+     * @return DeclareClass
+     */
+    public static function sample(): DeclareClass {
+        return new DeclareClass(
+         DeclareClass::sampleDeclare()
+        );
+    }
+}
+
+// This is an autogenerated file:Decltype
+
+class Decltype {
+    private int $decltype; // json:decltype Required
+
+    /**
+     * @param int $decltype
+     */
+    public function __construct(int $decltype) {
+        $this->decltype = $decltype;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDecltype(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDecltype(): int {
+        if (Decltype::validateDecltype($this->decltype))  {
+            return $this->decltype; /*int*/
+        }
+        throw new Exception('never get to this Decltype::decltype');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDecltype(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDecltype(): int {
+        if (Decltype::validateDecltype($this->decltype))  {
+            return $this->decltype;
+        }
+        throw new Exception('never get to getDecltype Decltype::decltype');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDecltype(): int {
+        return 31; /*31:decltype*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Decltype::validateDecltype($this->decltype);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'decltype'} = $this->toDecltype();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Decltype
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Decltype {
+        return new Decltype(
+         Decltype::fromDecltype($obj->{'decltype'})
+        );
+    }
+
+    /**
+     * @return Decltype
+     */
+    public static function sample(): Decltype {
+        return new Decltype(
+         Decltype::sampleDecltype()
+        );
+    }
+}
+
+// This is an autogenerated file:DecodeString
+
+class DecodeString {
+    private int $decodeString; // json:decode_string Required
+
+    /**
+     * @param int $decodeString
+     */
+    public function __construct(int $decodeString) {
+        $this->decodeString = $decodeString;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDecodeString(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDecodeString(): int {
+        if (DecodeString::validateDecodeString($this->decodeString))  {
+            return $this->decodeString; /*int*/
+        }
+        throw new Exception('never get to this DecodeString::decodeString');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDecodeString(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDecodeString(): int {
+        if (DecodeString::validateDecodeString($this->decodeString))  {
+            return $this->decodeString;
+        }
+        throw new Exception('never get to getDecodeString DecodeString::decodeString');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDecodeString(): int {
+        return 31; /*31:decodeString*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DecodeString::validateDecodeString($this->decodeString);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'decode_string'} = $this->toDecodeString();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DecodeString
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DecodeString {
+        return new DecodeString(
+         DecodeString::fromDecodeString($obj->{'decode_string'})
+        );
+    }
+
+    /**
+     * @return DecodeString
+     */
+    public static function sample(): DecodeString {
+        return new DecodeString(
+         DecodeString::sampleDecodeString()
+        );
+    }
+}
+
+// This is an autogenerated file:Purple
+
+class Purple {
+    private int $empty; // json:_ Required
+
+    /**
+     * @param int $empty
+     */
+    public function __construct(int $empty) {
+        $this->empty = $empty;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromEmpty(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toEmpty(): int {
+        if (Purple::validateEmpty($this->empty))  {
+            return $this->empty; /*int*/
+        }
+        throw new Exception('never get to this Purple::empty');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEmpty(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getEmpty(): int {
+        if (Purple::validateEmpty($this->empty))  {
+            return $this->empty;
+        }
+        throw new Exception('never get to getEmpty Purple::empty');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleEmpty(): int {
+        return 31; /*31:empty*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Purple::validateEmpty($this->empty);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'_'} = $this->toEmpty();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Purple
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Purple {
+        return new Purple(
+         Purple::fromEmpty($obj->{'_'})
+        );
+    }
+
+    /**
+     * @return Purple
+     */
+    public static function sample(): Purple {
+        return new Purple(
+         Purple::sampleEmpty()
+        );
+    }
+}
+
+// This is an autogenerated file:Imaginery
+
+class Imaginery {
+    private int $imaginery; // json:_Imaginery Required
+
+    /**
+     * @param int $imaginery
+     */
+    public function __construct(int $imaginery) {
+        $this->imaginery = $imaginery;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromImaginery(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toImaginery(): int {
+        if (Imaginery::validateImaginery($this->imaginery))  {
+            return $this->imaginery; /*int*/
+        }
+        throw new Exception('never get to this Imaginery::imaginery');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImaginery(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getImaginery(): int {
+        if (Imaginery::validateImaginery($this->imaginery))  {
+            return $this->imaginery;
+        }
+        throw new Exception('never get to getImaginery Imaginery::imaginery');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleImaginery(): int {
+        return 31; /*31:imaginery*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Imaginery::validateImaginery($this->imaginery);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'_Imaginery'} = $this->toImaginery();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Imaginery
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Imaginery {
+        return new Imaginery(
+         Imaginery::fromImaginery($obj->{'_Imaginery'})
+        );
+    }
+
+    /**
+     * @return Imaginery
+     */
+    public static function sample(): Imaginery {
+        return new Imaginery(
+         Imaginery::sampleImaginery()
+        );
+    }
+}
+
+// This is an autogenerated file:AnyClass
+
+class AnyClass {
+    private int $any; // json:any Required
+
+    /**
+     * @param int $any
+     */
+    public function __construct(int $any) {
+        $this->any = $any;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromAny(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toAny(): int {
+        if (AnyClass::validateAny($this->any))  {
+            return $this->any; /*int*/
+        }
+        throw new Exception('never get to this AnyClass::any');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateAny(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getAny(): int {
+        if (AnyClass::validateAny($this->any))  {
+            return $this->any;
+        }
+        throw new Exception('never get to getAny AnyClass::any');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleAny(): int {
+        return 31; /*31:any*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return AnyClass::validateAny($this->any);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'any'} = $this->toAny();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return AnyClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): AnyClass {
+        return new AnyClass(
+         AnyClass::fromAny($obj->{'any'})
+        );
+    }
+
+    /**
+     * @return AnyClass
+     */
+    public static function sample(): AnyClass {
+        return new AnyClass(
+         AnyClass::sampleAny()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj1Bool
+
+class Obj1Bool {
+    private int $bool; // json:_Bool Required
+
+    /**
+     * @param int $bool
+     */
+    public function __construct(int $bool) {
+        $this->bool = $bool;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBool(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBool(): int {
+        if (Obj1Bool::validateBool($this->bool))  {
+            return $this->bool; /*int*/
+        }
+        throw new Exception('never get to this Obj1Bool::bool');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBool(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBool(): int {
+        if (Obj1Bool::validateBool($this->bool))  {
+            return $this->bool;
+        }
+        throw new Exception('never get to getBool Obj1Bool::bool');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBool(): int {
+        return 31; /*31:bool*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj1Bool::validateBool($this->bool);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'_Bool'} = $this->toBool();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj1Bool
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj1Bool {
+        return new Obj1Bool(
+         Obj1Bool::fromBool($obj->{'_Bool'})
+        );
+    }
+
+    /**
+     * @return Obj1Bool
+     */
+    public static function sample(): Obj1Bool {
+        return new Obj1Bool(
+         Obj1Bool::sampleBool()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj1Class
+
+class Obj1Class {
+    private int $class; // json:class Required
+
+    /**
+     * @param int $class
+     */
+    public function __construct(int $class) {
+        $this->class = $class;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromClass(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toClass(): int {
+        if (Obj1Class::validateClass($this->class))  {
+            return $this->class; /*int*/
+        }
+        throw new Exception('never get to this Obj1Class::class');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateClass(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getClass(): int {
+        if (Obj1Class::validateClass($this->class))  {
+            return $this->class;
+        }
+        throw new Exception('never get to getClass Obj1Class::class');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleClass(): int {
+        return 31; /*31:class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj1Class::validateClass($this->class);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'class'} = $this->toClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj1Class
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj1Class {
+        return new Obj1Class(
+         Obj1Class::fromClass($obj->{'class'})
+        );
+    }
+
+    /**
+     * @return Obj1Class
+     */
+    public static function sample(): Obj1Class {
+        return new Obj1Class(
+         Obj1Class::sampleClass()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj1BoolClass
+
+class Obj1BoolClass {
+    private int $bool; // json:bool Required
+
+    /**
+     * @param int $bool
+     */
+    public function __construct(int $bool) {
+        $this->bool = $bool;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBool(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBool(): int {
+        if (Obj1BoolClass::validateBool($this->bool))  {
+            return $this->bool; /*int*/
+        }
+        throw new Exception('never get to this Obj1BoolClass::bool');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBool(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBool(): int {
+        if (Obj1BoolClass::validateBool($this->bool))  {
+            return $this->bool;
+        }
+        throw new Exception('never get to getBool Obj1BoolClass::bool');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBool(): int {
+        return 31; /*31:bool*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj1BoolClass::validateBool($this->bool);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'bool'} = $this->toBool();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj1BoolClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj1BoolClass {
+        return new Obj1BoolClass(
+         Obj1BoolClass::fromBool($obj->{'bool'})
+        );
+    }
+
+    /**
+     * @return Obj1BoolClass
+     */
+    public static function sample(): Obj1BoolClass {
+        return new Obj1BoolClass(
+         Obj1BoolClass::sampleBool()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj2
+
+class Obj2 {
+    private Def $def; // json:def Required
+    private DefaultClass $default; // json:default Required
+    private Defer $defer; // json:defer Required
+    private Deinit $deinit; // json:deinit Required
+    private Del $del; // json:del Required
+    private Delegate $delegate; // json:delegate Required
+    private Delete $delete; // json:delete Required
+    private Dict $dict; // json:dict Required
+    private Dictionary $dictionary; // json:dictionary Required
+    private DidSet $didSet; // json:didSet Required
+    private DoClass $do; // json:do Required
+    private Double $double; // json:double Required
+    private int $dummy; // json:dummy Required
+    private Dynamic $dynamic; // json:dynamic Required
+    private DynamicCast $dynamicCast; // json:dynamic_cast Required
+    private Elif $elif; // json:elif Required
+    private ElseClass $else; // json:else Required
+    private EncodeQuickType $encodeQuickType; // json:encode_quick_type Required
+    private EnumClass $enum; // json:enum Required
+    private EqualityContract $equalityContract; // json:equalityContract Required
+    private Event $event; // json:event Required
+    private Except $except; // json:except Required
+    private ExceptionClass $exception; // json:exception Required
+    private Explicit $explicit; // json:explicit Required
+    private Export $export; // json:export Required
+    private Exposing $exposing; // json:exposing Required
+    private ExtendsClass $extends; // json:extends Required
+    private Extension $extension; // json:extension Required
+    private Extern $extern; // json:extern Required
+    private Fallthrough $fallthrough; // json:fallthrough Required
+    private FalseClass $false; // json:False Required
+    private Fileprivate $fileprivate; // json:fileprivate Required
+    private FinalClass $final; // json:final Required
+    private FinallyClass $finally; // json:finally Required
+    private Fixed $fixed; // json:fixed Required
+    private FloatClass $float; // json:float Required
+    private ForClass $for; // json:for Required
+    private ForeachClass $foreach; // json:foreach Required
+    private Friend $friend; // json:friend Required
+    private From $from; // json:from Required
+    private FromJSON $fromJSON; // json:from_json Required
+    private Func $func; // json:func Required
+    private FunctionClass $function; // json:function Required
+    private Get $get; // json:get Required
+    private GlobalClass $global; // json:global Required
+    private Go $go; // json:go Required
+    private GotoClass $goto; // json:goto Required
+    private Guard $guard; // json:guard Required
+    private HasOwnProperty $hasOwnProperty; // json:hasOwnProperty Required
+    private ID $id; // json:id Required
+    private IfClass $if; // json:if Required
+    private Imp $imp; // json:IMP Required
+    private ImplementsClass $implements; // json:implements Required
+    private Implicit $implicit; // json:implicit Required
+    private Import $import; // json:import Required
+    private In $in; // json:in Required
+    private Indirect $indirect; // json:indirect Required
+    private Infix $infix; // json:infix Required
+    private Init $init; // json:init Required
+    private Inline $inline; // json:inline Required
+    private Inout $inout; // json:inout Required
+    private InstanceofClass $instanceof; // json:instanceof Required
+    private IntClass $int; // json:int Required
+    private InterfaceClass $interface; // json:interface Required
+    private Internal $internal; // json:internal Required
+    private Obj2False $obj2False; // json:false Required
+
+    /**
+     * @param Def $def
+     * @param DefaultClass $default
+     * @param Defer $defer
+     * @param Deinit $deinit
+     * @param Del $del
+     * @param Delegate $delegate
+     * @param Delete $delete
+     * @param Dict $dict
+     * @param Dictionary $dictionary
+     * @param DidSet $didSet
+     * @param DoClass $do
+     * @param Double $double
+     * @param int $dummy
+     * @param Dynamic $dynamic
+     * @param DynamicCast $dynamicCast
+     * @param Elif $elif
+     * @param ElseClass $else
+     * @param EncodeQuickType $encodeQuickType
+     * @param EnumClass $enum
+     * @param EqualityContract $equalityContract
+     * @param Event $event
+     * @param Except $except
+     * @param ExceptionClass $exception
+     * @param Explicit $explicit
+     * @param Export $export
+     * @param Exposing $exposing
+     * @param ExtendsClass $extends
+     * @param Extension $extension
+     * @param Extern $extern
+     * @param Fallthrough $fallthrough
+     * @param FalseClass $false
+     * @param Fileprivate $fileprivate
+     * @param FinalClass $final
+     * @param FinallyClass $finally
+     * @param Fixed $fixed
+     * @param FloatClass $float
+     * @param ForClass $for
+     * @param ForeachClass $foreach
+     * @param Friend $friend
+     * @param From $from
+     * @param FromJSON $fromJSON
+     * @param Func $func
+     * @param FunctionClass $function
+     * @param Get $get
+     * @param GlobalClass $global
+     * @param Go $go
+     * @param GotoClass $goto
+     * @param Guard $guard
+     * @param HasOwnProperty $hasOwnProperty
+     * @param ID $id
+     * @param IfClass $if
+     * @param Imp $imp
+     * @param ImplementsClass $implements
+     * @param Implicit $implicit
+     * @param Import $import
+     * @param In $in
+     * @param Indirect $indirect
+     * @param Infix $infix
+     * @param Init $init
+     * @param Inline $inline
+     * @param Inout $inout
+     * @param InstanceofClass $instanceof
+     * @param IntClass $int
+     * @param InterfaceClass $interface
+     * @param Internal $internal
+     * @param Obj2False $obj2False
+     */
+    public function __construct(Def $def, DefaultClass $default, Defer $defer, Deinit $deinit, Del $del, Delegate $delegate, Delete $delete, Dict $dict, Dictionary $dictionary, DidSet $didSet, DoClass $do, Double $double, int $dummy, Dynamic $dynamic, DynamicCast $dynamicCast, Elif $elif, ElseClass $else, EncodeQuickType $encodeQuickType, EnumClass $enum, EqualityContract $equalityContract, Event $event, Except $except, ExceptionClass $exception, Explicit $explicit, Export $export, Exposing $exposing, ExtendsClass $extends, Extension $extension, Extern $extern, Fallthrough $fallthrough, FalseClass $false, Fileprivate $fileprivate, FinalClass $final, FinallyClass $finally, Fixed $fixed, FloatClass $float, ForClass $for, ForeachClass $foreach, Friend $friend, From $from, FromJSON $fromJSON, Func $func, FunctionClass $function, Get $get, GlobalClass $global, Go $go, GotoClass $goto, Guard $guard, HasOwnProperty $hasOwnProperty, 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, Obj2False $obj2False) {
+        $this->def = $def;
+        $this->default = $default;
+        $this->defer = $defer;
+        $this->deinit = $deinit;
+        $this->del = $del;
+        $this->delegate = $delegate;
+        $this->delete = $delete;
+        $this->dict = $dict;
+        $this->dictionary = $dictionary;
+        $this->didSet = $didSet;
+        $this->do = $do;
+        $this->double = $double;
+        $this->dummy = $dummy;
+        $this->dynamic = $dynamic;
+        $this->dynamicCast = $dynamicCast;
+        $this->elif = $elif;
+        $this->else = $else;
+        $this->encodeQuickType = $encodeQuickType;
+        $this->enum = $enum;
+        $this->equalityContract = $equalityContract;
+        $this->event = $event;
+        $this->except = $except;
+        $this->exception = $exception;
+        $this->explicit = $explicit;
+        $this->export = $export;
+        $this->exposing = $exposing;
+        $this->extends = $extends;
+        $this->extension = $extension;
+        $this->extern = $extern;
+        $this->fallthrough = $fallthrough;
+        $this->false = $false;
+        $this->fileprivate = $fileprivate;
+        $this->final = $final;
+        $this->finally = $finally;
+        $this->fixed = $fixed;
+        $this->float = $float;
+        $this->for = $for;
+        $this->foreach = $foreach;
+        $this->friend = $friend;
+        $this->from = $from;
+        $this->fromJSON = $fromJSON;
+        $this->func = $func;
+        $this->function = $function;
+        $this->get = $get;
+        $this->global = $global;
+        $this->go = $go;
+        $this->goto = $goto;
+        $this->guard = $guard;
+        $this->hasOwnProperty = $hasOwnProperty;
+        $this->id = $id;
+        $this->if = $if;
+        $this->imp = $imp;
+        $this->implements = $implements;
+        $this->implicit = $implicit;
+        $this->import = $import;
+        $this->in = $in;
+        $this->indirect = $indirect;
+        $this->infix = $infix;
+        $this->init = $init;
+        $this->inline = $inline;
+        $this->inout = $inout;
+        $this->instanceof = $instanceof;
+        $this->int = $int;
+        $this->interface = $interface;
+        $this->internal = $internal;
+        $this->obj2False = $obj2False;
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Def
+     */
+    public static function fromDef(stdClass $value): Def {
+        return Def::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDef(): stdClass {
+        if (Obj2::validateDef($this->def))  {
+            return $this->def->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::def');
+    }
+
+    /**
+     * @param Def
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDef(Def $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Def
+     */
+    public function getDef(): Def {
+        if (Obj2::validateDef($this->def))  {
+            return $this->def;
+        }
+        throw new Exception('never get to getDef Obj2::def');
+    }
+
+    /**
+     * @return Def
+     */
+    public static function sampleDef(): Def {
+        return Def::sample(); /*31:def*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DefaultClass
+     */
+    public static function fromDefault(stdClass $value): DefaultClass {
+        return DefaultClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDefault(): stdClass {
+        if (Obj2::validateDefault($this->default))  {
+            return $this->default->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::default');
+    }
+
+    /**
+     * @param DefaultClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDefault(DefaultClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DefaultClass
+     */
+    public function getDefault(): DefaultClass {
+        if (Obj2::validateDefault($this->default))  {
+            return $this->default;
+        }
+        throw new Exception('never get to getDefault Obj2::default');
+    }
+
+    /**
+     * @return DefaultClass
+     */
+    public static function sampleDefault(): DefaultClass {
+        return DefaultClass::sample(); /*32:default*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Defer
+     */
+    public static function fromDefer(stdClass $value): Defer {
+        return Defer::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDefer(): stdClass {
+        if (Obj2::validateDefer($this->defer))  {
+            return $this->defer->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::defer');
+    }
+
+    /**
+     * @param Defer
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDefer(Defer $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Defer
+     */
+    public function getDefer(): Defer {
+        if (Obj2::validateDefer($this->defer))  {
+            return $this->defer;
+        }
+        throw new Exception('never get to getDefer Obj2::defer');
+    }
+
+    /**
+     * @return Defer
+     */
+    public static function sampleDefer(): Defer {
+        return Defer::sample(); /*33:defer*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Deinit
+     */
+    public static function fromDeinit(stdClass $value): Deinit {
+        return Deinit::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDeinit(): stdClass {
+        if (Obj2::validateDeinit($this->deinit))  {
+            return $this->deinit->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::deinit');
+    }
+
+    /**
+     * @param Deinit
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeinit(Deinit $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Deinit
+     */
+    public function getDeinit(): Deinit {
+        if (Obj2::validateDeinit($this->deinit))  {
+            return $this->deinit;
+        }
+        throw new Exception('never get to getDeinit Obj2::deinit');
+    }
+
+    /**
+     * @return Deinit
+     */
+    public static function sampleDeinit(): Deinit {
+        return Deinit::sample(); /*34:deinit*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Del
+     */
+    public static function fromDel(stdClass $value): Del {
+        return Del::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDel(): stdClass {
+        if (Obj2::validateDel($this->del))  {
+            return $this->del->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::del');
+    }
+
+    /**
+     * @param Del
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDel(Del $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Del
+     */
+    public function getDel(): Del {
+        if (Obj2::validateDel($this->del))  {
+            return $this->del;
+        }
+        throw new Exception('never get to getDel Obj2::del');
+    }
+
+    /**
+     * @return Del
+     */
+    public static function sampleDel(): Del {
+        return Del::sample(); /*35:del*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Delegate
+     */
+    public static function fromDelegate(stdClass $value): Delegate {
+        return Delegate::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDelegate(): stdClass {
+        if (Obj2::validateDelegate($this->delegate))  {
+            return $this->delegate->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::delegate');
+    }
+
+    /**
+     * @param Delegate
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDelegate(Delegate $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Delegate
+     */
+    public function getDelegate(): Delegate {
+        if (Obj2::validateDelegate($this->delegate))  {
+            return $this->delegate;
+        }
+        throw new Exception('never get to getDelegate Obj2::delegate');
+    }
+
+    /**
+     * @return Delegate
+     */
+    public static function sampleDelegate(): Delegate {
+        return Delegate::sample(); /*36:delegate*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Delete
+     */
+    public static function fromDelete(stdClass $value): Delete {
+        return Delete::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDelete(): stdClass {
+        if (Obj2::validateDelete($this->delete))  {
+            return $this->delete->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::delete');
+    }
+
+    /**
+     * @param Delete
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDelete(Delete $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Delete
+     */
+    public function getDelete(): Delete {
+        if (Obj2::validateDelete($this->delete))  {
+            return $this->delete;
+        }
+        throw new Exception('never get to getDelete Obj2::delete');
+    }
+
+    /**
+     * @return Delete
+     */
+    public static function sampleDelete(): Delete {
+        return Delete::sample(); /*37:delete*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Dict
+     */
+    public static function fromDict(stdClass $value): Dict {
+        return Dict::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDict(): stdClass {
+        if (Obj2::validateDict($this->dict))  {
+            return $this->dict->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::dict');
+    }
+
+    /**
+     * @param Dict
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDict(Dict $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Dict
+     */
+    public function getDict(): Dict {
+        if (Obj2::validateDict($this->dict))  {
+            return $this->dict;
+        }
+        throw new Exception('never get to getDict Obj2::dict');
+    }
+
+    /**
+     * @return Dict
+     */
+    public static function sampleDict(): Dict {
+        return Dict::sample(); /*38:dict*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Dictionary
+     */
+    public static function fromDictionary(stdClass $value): Dictionary {
+        return Dictionary::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDictionary(): stdClass {
+        if (Obj2::validateDictionary($this->dictionary))  {
+            return $this->dictionary->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::dictionary');
+    }
+
+    /**
+     * @param Dictionary
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDictionary(Dictionary $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Dictionary
+     */
+    public function getDictionary(): Dictionary {
+        if (Obj2::validateDictionary($this->dictionary))  {
+            return $this->dictionary;
+        }
+        throw new Exception('never get to getDictionary Obj2::dictionary');
+    }
+
+    /**
+     * @return Dictionary
+     */
+    public static function sampleDictionary(): Dictionary {
+        return Dictionary::sample(); /*39:dictionary*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DidSet
+     */
+    public static function fromDidSet(stdClass $value): DidSet {
+        return DidSet::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDidSet(): stdClass {
+        if (Obj2::validateDidSet($this->didSet))  {
+            return $this->didSet->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::didSet');
+    }
+
+    /**
+     * @param DidSet
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDidSet(DidSet $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DidSet
+     */
+    public function getDidSet(): DidSet {
+        if (Obj2::validateDidSet($this->didSet))  {
+            return $this->didSet;
+        }
+        throw new Exception('never get to getDidSet Obj2::didSet');
+    }
+
+    /**
+     * @return DidSet
+     */
+    public static function sampleDidSet(): DidSet {
+        return DidSet::sample(); /*40:didSet*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DoClass
+     */
+    public static function fromDo(stdClass $value): DoClass {
+        return DoClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDo(): stdClass {
+        if (Obj2::validateDo($this->do))  {
+            return $this->do->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::do');
+    }
+
+    /**
+     * @param DoClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDo(DoClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DoClass
+     */
+    public function getDo(): DoClass {
+        if (Obj2::validateDo($this->do))  {
+            return $this->do;
+        }
+        throw new Exception('never get to getDo Obj2::do');
+    }
+
+    /**
+     * @return DoClass
+     */
+    public static function sampleDo(): DoClass {
+        return DoClass::sample(); /*41:do*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Double
+     */
+    public static function fromDouble(stdClass $value): Double {
+        return Double::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDouble(): stdClass {
+        if (Obj2::validateDouble($this->double))  {
+            return $this->double->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::double');
+    }
+
+    /**
+     * @param Double
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDouble(Double $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Double
+     */
+    public function getDouble(): Double {
+        if (Obj2::validateDouble($this->double))  {
+            return $this->double;
+        }
+        throw new Exception('never get to getDouble Obj2::double');
+    }
+
+    /**
+     * @return Double
+     */
+    public static function sampleDouble(): Double {
+        return Double::sample(); /*42:double*/
+    }
+
+    /**
+     * @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 (Obj2::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this Obj2::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 (Obj2::validateDummy($this->dummy))  {
+            return $this->dummy;
+        }
+        throw new Exception('never get to getDummy Obj2::dummy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDummy(): int {
+        return 43; /*43:dummy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Dynamic
+     */
+    public static function fromDynamic(stdClass $value): Dynamic {
+        return Dynamic::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDynamic(): stdClass {
+        if (Obj2::validateDynamic($this->dynamic))  {
+            return $this->dynamic->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::dynamic');
+    }
+
+    /**
+     * @param Dynamic
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDynamic(Dynamic $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Dynamic
+     */
+    public function getDynamic(): Dynamic {
+        if (Obj2::validateDynamic($this->dynamic))  {
+            return $this->dynamic;
+        }
+        throw new Exception('never get to getDynamic Obj2::dynamic');
+    }
+
+    /**
+     * @return Dynamic
+     */
+    public static function sampleDynamic(): Dynamic {
+        return Dynamic::sample(); /*44:dynamic*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DynamicCast
+     */
+    public static function fromDynamicCast(stdClass $value): DynamicCast {
+        return DynamicCast::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDynamicCast(): stdClass {
+        if (Obj2::validateDynamicCast($this->dynamicCast))  {
+            return $this->dynamicCast->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::dynamicCast');
+    }
+
+    /**
+     * @param DynamicCast
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDynamicCast(DynamicCast $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DynamicCast
+     */
+    public function getDynamicCast(): DynamicCast {
+        if (Obj2::validateDynamicCast($this->dynamicCast))  {
+            return $this->dynamicCast;
+        }
+        throw new Exception('never get to getDynamicCast Obj2::dynamicCast');
+    }
+
+    /**
+     * @return DynamicCast
+     */
+    public static function sampleDynamicCast(): DynamicCast {
+        return DynamicCast::sample(); /*45:dynamicCast*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Elif
+     */
+    public static function fromElif(stdClass $value): Elif {
+        return Elif::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toElif(): stdClass {
+        if (Obj2::validateElif($this->elif))  {
+            return $this->elif->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::elif');
+    }
+
+    /**
+     * @param Elif
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateElif(Elif $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Elif
+     */
+    public function getElif(): Elif {
+        if (Obj2::validateElif($this->elif))  {
+            return $this->elif;
+        }
+        throw new Exception('never get to getElif Obj2::elif');
+    }
+
+    /**
+     * @return Elif
+     */
+    public static function sampleElif(): Elif {
+        return Elif::sample(); /*46:elif*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ElseClass
+     */
+    public static function fromElse(stdClass $value): ElseClass {
+        return ElseClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toElse(): stdClass {
+        if (Obj2::validateElse($this->else))  {
+            return $this->else->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::else');
+    }
+
+    /**
+     * @param ElseClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateElse(ElseClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ElseClass
+     */
+    public function getElse(): ElseClass {
+        if (Obj2::validateElse($this->else))  {
+            return $this->else;
+        }
+        throw new Exception('never get to getElse Obj2::else');
+    }
+
+    /**
+     * @return ElseClass
+     */
+    public static function sampleElse(): ElseClass {
+        return ElseClass::sample(); /*47:else*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return EncodeQuickType
+     */
+    public static function fromEncodeQuickType(stdClass $value): EncodeQuickType {
+        return EncodeQuickType::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toEncodeQuickType(): stdClass {
+        if (Obj2::validateEncodeQuickType($this->encodeQuickType))  {
+            return $this->encodeQuickType->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::encodeQuickType');
+    }
+
+    /**
+     * @param EncodeQuickType
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEncodeQuickType(EncodeQuickType $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return EncodeQuickType
+     */
+    public function getEncodeQuickType(): EncodeQuickType {
+        if (Obj2::validateEncodeQuickType($this->encodeQuickType))  {
+            return $this->encodeQuickType;
+        }
+        throw new Exception('never get to getEncodeQuickType Obj2::encodeQuickType');
+    }
+
+    /**
+     * @return EncodeQuickType
+     */
+    public static function sampleEncodeQuickType(): EncodeQuickType {
+        return EncodeQuickType::sample(); /*48:encodeQuickType*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return EnumClass
+     */
+    public static function fromEnum(stdClass $value): EnumClass {
+        return EnumClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toEnum(): stdClass {
+        if (Obj2::validateEnum($this->enum))  {
+            return $this->enum->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::enum');
+    }
+
+    /**
+     * @param EnumClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEnum(EnumClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return EnumClass
+     */
+    public function getEnum(): EnumClass {
+        if (Obj2::validateEnum($this->enum))  {
+            return $this->enum;
+        }
+        throw new Exception('never get to getEnum Obj2::enum');
+    }
+
+    /**
+     * @return EnumClass
+     */
+    public static function sampleEnum(): EnumClass {
+        return EnumClass::sample(); /*49:enum*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return EqualityContract
+     */
+    public static function fromEqualityContract(stdClass $value): EqualityContract {
+        return EqualityContract::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toEqualityContract(): stdClass {
+        if (Obj2::validateEqualityContract($this->equalityContract))  {
+            return $this->equalityContract->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::equalityContract');
+    }
+
+    /**
+     * @param EqualityContract
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEqualityContract(EqualityContract $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return EqualityContract
+     */
+    public function getEqualityContract(): EqualityContract {
+        if (Obj2::validateEqualityContract($this->equalityContract))  {
+            return $this->equalityContract;
+        }
+        throw new Exception('never get to getEqualityContract Obj2::equalityContract');
+    }
+
+    /**
+     * @return EqualityContract
+     */
+    public static function sampleEqualityContract(): EqualityContract {
+        return EqualityContract::sample(); /*50:equalityContract*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Event
+     */
+    public static function fromEvent(stdClass $value): Event {
+        return Event::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toEvent(): stdClass {
+        if (Obj2::validateEvent($this->event))  {
+            return $this->event->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::event');
+    }
+
+    /**
+     * @param Event
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEvent(Event $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Event
+     */
+    public function getEvent(): Event {
+        if (Obj2::validateEvent($this->event))  {
+            return $this->event;
+        }
+        throw new Exception('never get to getEvent Obj2::event');
+    }
+
+    /**
+     * @return Event
+     */
+    public static function sampleEvent(): Event {
+        return Event::sample(); /*51:event*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Except
+     */
+    public static function fromExcept(stdClass $value): Except {
+        return Except::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExcept(): stdClass {
+        if (Obj2::validateExcept($this->except))  {
+            return $this->except->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::except');
+    }
+
+    /**
+     * @param Except
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExcept(Except $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Except
+     */
+    public function getExcept(): Except {
+        if (Obj2::validateExcept($this->except))  {
+            return $this->except;
+        }
+        throw new Exception('never get to getExcept Obj2::except');
+    }
+
+    /**
+     * @return Except
+     */
+    public static function sampleExcept(): Except {
+        return Except::sample(); /*52:except*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ExceptionClass
+     */
+    public static function fromException(stdClass $value): ExceptionClass {
+        return ExceptionClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toException(): stdClass {
+        if (Obj2::validateException($this->exception))  {
+            return $this->exception->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::exception');
+    }
+
+    /**
+     * @param ExceptionClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateException(ExceptionClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ExceptionClass
+     */
+    public function getException(): ExceptionClass {
+        if (Obj2::validateException($this->exception))  {
+            return $this->exception;
+        }
+        throw new Exception('never get to getException Obj2::exception');
+    }
+
+    /**
+     * @return ExceptionClass
+     */
+    public static function sampleException(): ExceptionClass {
+        return ExceptionClass::sample(); /*53:exception*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Explicit
+     */
+    public static function fromExplicit(stdClass $value): Explicit {
+        return Explicit::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExplicit(): stdClass {
+        if (Obj2::validateExplicit($this->explicit))  {
+            return $this->explicit->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::explicit');
+    }
+
+    /**
+     * @param Explicit
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExplicit(Explicit $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Explicit
+     */
+    public function getExplicit(): Explicit {
+        if (Obj2::validateExplicit($this->explicit))  {
+            return $this->explicit;
+        }
+        throw new Exception('never get to getExplicit Obj2::explicit');
+    }
+
+    /**
+     * @return Explicit
+     */
+    public static function sampleExplicit(): Explicit {
+        return Explicit::sample(); /*54:explicit*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Export
+     */
+    public static function fromExport(stdClass $value): Export {
+        return Export::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExport(): stdClass {
+        if (Obj2::validateExport($this->export))  {
+            return $this->export->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::export');
+    }
+
+    /**
+     * @param Export
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExport(Export $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Export
+     */
+    public function getExport(): Export {
+        if (Obj2::validateExport($this->export))  {
+            return $this->export;
+        }
+        throw new Exception('never get to getExport Obj2::export');
+    }
+
+    /**
+     * @return Export
+     */
+    public static function sampleExport(): Export {
+        return Export::sample(); /*55:export*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Exposing
+     */
+    public static function fromExposing(stdClass $value): Exposing {
+        return Exposing::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExposing(): stdClass {
+        if (Obj2::validateExposing($this->exposing))  {
+            return $this->exposing->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::exposing');
+    }
+
+    /**
+     * @param Exposing
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExposing(Exposing $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Exposing
+     */
+    public function getExposing(): Exposing {
+        if (Obj2::validateExposing($this->exposing))  {
+            return $this->exposing;
+        }
+        throw new Exception('never get to getExposing Obj2::exposing');
+    }
+
+    /**
+     * @return Exposing
+     */
+    public static function sampleExposing(): Exposing {
+        return Exposing::sample(); /*56:exposing*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ExtendsClass
+     */
+    public static function fromExtends(stdClass $value): ExtendsClass {
+        return ExtendsClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExtends(): stdClass {
+        if (Obj2::validateExtends($this->extends))  {
+            return $this->extends->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::extends');
+    }
+
+    /**
+     * @param ExtendsClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExtends(ExtendsClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ExtendsClass
+     */
+    public function getExtends(): ExtendsClass {
+        if (Obj2::validateExtends($this->extends))  {
+            return $this->extends;
+        }
+        throw new Exception('never get to getExtends Obj2::extends');
+    }
+
+    /**
+     * @return ExtendsClass
+     */
+    public static function sampleExtends(): ExtendsClass {
+        return ExtendsClass::sample(); /*57:extends*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Extension
+     */
+    public static function fromExtension(stdClass $value): Extension {
+        return Extension::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExtension(): stdClass {
+        if (Obj2::validateExtension($this->extension))  {
+            return $this->extension->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::extension');
+    }
+
+    /**
+     * @param Extension
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExtension(Extension $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Extension
+     */
+    public function getExtension(): Extension {
+        if (Obj2::validateExtension($this->extension))  {
+            return $this->extension;
+        }
+        throw new Exception('never get to getExtension Obj2::extension');
+    }
+
+    /**
+     * @return Extension
+     */
+    public static function sampleExtension(): Extension {
+        return Extension::sample(); /*58:extension*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Extern
+     */
+    public static function fromExtern(stdClass $value): Extern {
+        return Extern::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toExtern(): stdClass {
+        if (Obj2::validateExtern($this->extern))  {
+            return $this->extern->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::extern');
+    }
+
+    /**
+     * @param Extern
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExtern(Extern $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Extern
+     */
+    public function getExtern(): Extern {
+        if (Obj2::validateExtern($this->extern))  {
+            return $this->extern;
+        }
+        throw new Exception('never get to getExtern Obj2::extern');
+    }
+
+    /**
+     * @return Extern
+     */
+    public static function sampleExtern(): Extern {
+        return Extern::sample(); /*59:extern*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Fallthrough
+     */
+    public static function fromFallthrough(stdClass $value): Fallthrough {
+        return Fallthrough::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFallthrough(): stdClass {
+        if (Obj2::validateFallthrough($this->fallthrough))  {
+            return $this->fallthrough->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::fallthrough');
+    }
+
+    /**
+     * @param Fallthrough
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFallthrough(Fallthrough $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Fallthrough
+     */
+    public function getFallthrough(): Fallthrough {
+        if (Obj2::validateFallthrough($this->fallthrough))  {
+            return $this->fallthrough;
+        }
+        throw new Exception('never get to getFallthrough Obj2::fallthrough');
+    }
+
+    /**
+     * @return Fallthrough
+     */
+    public static function sampleFallthrough(): Fallthrough {
+        return Fallthrough::sample(); /*60:fallthrough*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return FalseClass
+     */
+    public static function fromFalse(stdClass $value): FalseClass {
+        return FalseClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFalse(): stdClass {
+        if (Obj2::validateFalse($this->false))  {
+            return $this->false->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::false');
+    }
+
+    /**
+     * @param FalseClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFalse(FalseClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return FalseClass
+     */
+    public function getFalse(): FalseClass {
+        if (Obj2::validateFalse($this->false))  {
+            return $this->false;
+        }
+        throw new Exception('never get to getFalse Obj2::false');
+    }
+
+    /**
+     * @return FalseClass
+     */
+    public static function sampleFalse(): FalseClass {
+        return FalseClass::sample(); /*61:false*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Fileprivate
+     */
+    public static function fromFileprivate(stdClass $value): Fileprivate {
+        return Fileprivate::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFileprivate(): stdClass {
+        if (Obj2::validateFileprivate($this->fileprivate))  {
+            return $this->fileprivate->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::fileprivate');
+    }
+
+    /**
+     * @param Fileprivate
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFileprivate(Fileprivate $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Fileprivate
+     */
+    public function getFileprivate(): Fileprivate {
+        if (Obj2::validateFileprivate($this->fileprivate))  {
+            return $this->fileprivate;
+        }
+        throw new Exception('never get to getFileprivate Obj2::fileprivate');
+    }
+
+    /**
+     * @return Fileprivate
+     */
+    public static function sampleFileprivate(): Fileprivate {
+        return Fileprivate::sample(); /*62:fileprivate*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return FinalClass
+     */
+    public static function fromFinal(stdClass $value): FinalClass {
+        return FinalClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFinal(): stdClass {
+        if (Obj2::validateFinal($this->final))  {
+            return $this->final->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::final');
+    }
+
+    /**
+     * @param FinalClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFinal(FinalClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return FinalClass
+     */
+    public function getFinal(): FinalClass {
+        if (Obj2::validateFinal($this->final))  {
+            return $this->final;
+        }
+        throw new Exception('never get to getFinal Obj2::final');
+    }
+
+    /**
+     * @return FinalClass
+     */
+    public static function sampleFinal(): FinalClass {
+        return FinalClass::sample(); /*63:final*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return FinallyClass
+     */
+    public static function fromFinally(stdClass $value): FinallyClass {
+        return FinallyClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFinally(): stdClass {
+        if (Obj2::validateFinally($this->finally))  {
+            return $this->finally->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::finally');
+    }
+
+    /**
+     * @param FinallyClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFinally(FinallyClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return FinallyClass
+     */
+    public function getFinally(): FinallyClass {
+        if (Obj2::validateFinally($this->finally))  {
+            return $this->finally;
+        }
+        throw new Exception('never get to getFinally Obj2::finally');
+    }
+
+    /**
+     * @return FinallyClass
+     */
+    public static function sampleFinally(): FinallyClass {
+        return FinallyClass::sample(); /*64:finally*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Fixed
+     */
+    public static function fromFixed(stdClass $value): Fixed {
+        return Fixed::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFixed(): stdClass {
+        if (Obj2::validateFixed($this->fixed))  {
+            return $this->fixed->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::fixed');
+    }
+
+    /**
+     * @param Fixed
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFixed(Fixed $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Fixed
+     */
+    public function getFixed(): Fixed {
+        if (Obj2::validateFixed($this->fixed))  {
+            return $this->fixed;
+        }
+        throw new Exception('never get to getFixed Obj2::fixed');
+    }
+
+    /**
+     * @return Fixed
+     */
+    public static function sampleFixed(): Fixed {
+        return Fixed::sample(); /*65:fixed*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return FloatClass
+     */
+    public static function fromFloat(stdClass $value): FloatClass {
+        return FloatClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFloat(): stdClass {
+        if (Obj2::validateFloat($this->float))  {
+            return $this->float->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::float');
+    }
+
+    /**
+     * @param FloatClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFloat(FloatClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return FloatClass
+     */
+    public function getFloat(): FloatClass {
+        if (Obj2::validateFloat($this->float))  {
+            return $this->float;
+        }
+        throw new Exception('never get to getFloat Obj2::float');
+    }
+
+    /**
+     * @return FloatClass
+     */
+    public static function sampleFloat(): FloatClass {
+        return FloatClass::sample(); /*66:float*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ForClass
+     */
+    public static function fromFor(stdClass $value): ForClass {
+        return ForClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFor(): stdClass {
+        if (Obj2::validateFor($this->for))  {
+            return $this->for->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::for');
+    }
+
+    /**
+     * @param ForClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFor(ForClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ForClass
+     */
+    public function getFor(): ForClass {
+        if (Obj2::validateFor($this->for))  {
+            return $this->for;
+        }
+        throw new Exception('never get to getFor Obj2::for');
+    }
+
+    /**
+     * @return ForClass
+     */
+    public static function sampleFor(): ForClass {
+        return ForClass::sample(); /*67:for*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ForeachClass
+     */
+    public static function fromForeach(stdClass $value): ForeachClass {
+        return ForeachClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toForeach(): stdClass {
+        if (Obj2::validateForeach($this->foreach))  {
+            return $this->foreach->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::foreach');
+    }
+
+    /**
+     * @param ForeachClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateForeach(ForeachClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ForeachClass
+     */
+    public function getForeach(): ForeachClass {
+        if (Obj2::validateForeach($this->foreach))  {
+            return $this->foreach;
+        }
+        throw new Exception('never get to getForeach Obj2::foreach');
+    }
+
+    /**
+     * @return ForeachClass
+     */
+    public static function sampleForeach(): ForeachClass {
+        return ForeachClass::sample(); /*68:foreach*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Friend
+     */
+    public static function fromFriend(stdClass $value): Friend {
+        return Friend::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFriend(): stdClass {
+        if (Obj2::validateFriend($this->friend))  {
+            return $this->friend->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::friend');
+    }
+
+    /**
+     * @param Friend
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFriend(Friend $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Friend
+     */
+    public function getFriend(): Friend {
+        if (Obj2::validateFriend($this->friend))  {
+            return $this->friend;
+        }
+        throw new Exception('never get to getFriend Obj2::friend');
+    }
+
+    /**
+     * @return Friend
+     */
+    public static function sampleFriend(): Friend {
+        return Friend::sample(); /*69:friend*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return From
+     */
+    public static function fromFrom(stdClass $value): From {
+        return From::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFrom(): stdClass {
+        if (Obj2::validateFrom($this->from))  {
+            return $this->from->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::from');
+    }
+
+    /**
+     * @param From
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFrom(From $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return From
+     */
+    public function getFrom(): From {
+        if (Obj2::validateFrom($this->from))  {
+            return $this->from;
+        }
+        throw new Exception('never get to getFrom Obj2::from');
+    }
+
+    /**
+     * @return From
+     */
+    public static function sampleFrom(): From {
+        return From::sample(); /*70:from*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return FromJSON
+     */
+    public static function fromFromJSON(stdClass $value): FromJSON {
+        return FromJSON::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFromJSON(): stdClass {
+        if (Obj2::validateFromJSON($this->fromJSON))  {
+            return $this->fromJSON->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::fromJSON');
+    }
+
+    /**
+     * @param FromJSON
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFromJSON(FromJSON $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return FromJSON
+     */
+    public function getFromJSON(): FromJSON {
+        if (Obj2::validateFromJSON($this->fromJSON))  {
+            return $this->fromJSON;
+        }
+        throw new Exception('never get to getFromJSON Obj2::fromJSON');
+    }
+
+    /**
+     * @return FromJSON
+     */
+    public static function sampleFromJSON(): FromJSON {
+        return FromJSON::sample(); /*71:fromJSON*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Func
+     */
+    public static function fromFunc(stdClass $value): Func {
+        return Func::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFunc(): stdClass {
+        if (Obj2::validateFunc($this->func))  {
+            return $this->func->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::func');
+    }
+
+    /**
+     * @param Func
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFunc(Func $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Func
+     */
+    public function getFunc(): Func {
+        if (Obj2::validateFunc($this->func))  {
+            return $this->func;
+        }
+        throw new Exception('never get to getFunc Obj2::func');
+    }
+
+    /**
+     * @return Func
+     */
+    public static function sampleFunc(): Func {
+        return Func::sample(); /*72:func*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return FunctionClass
+     */
+    public static function fromFunction(stdClass $value): FunctionClass {
+        return FunctionClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toFunction(): stdClass {
+        if (Obj2::validateFunction($this->function))  {
+            return $this->function->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::function');
+    }
+
+    /**
+     * @param FunctionClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFunction(FunctionClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return FunctionClass
+     */
+    public function getFunction(): FunctionClass {
+        if (Obj2::validateFunction($this->function))  {
+            return $this->function;
+        }
+        throw new Exception('never get to getFunction Obj2::function');
+    }
+
+    /**
+     * @return FunctionClass
+     */
+    public static function sampleFunction(): FunctionClass {
+        return FunctionClass::sample(); /*73:function*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Get
+     */
+    public static function fromGet(stdClass $value): Get {
+        return Get::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGet(): stdClass {
+        if (Obj2::validateGet($this->get))  {
+            return $this->get->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::get');
+    }
+
+    /**
+     * @param Get
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGet(Get $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Get
+     */
+    public function getGet(): Get {
+        if (Obj2::validateGet($this->get))  {
+            return $this->get;
+        }
+        throw new Exception('never get to getGet Obj2::get');
+    }
+
+    /**
+     * @return Get
+     */
+    public static function sampleGet(): Get {
+        return Get::sample(); /*74:get*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return GlobalClass
+     */
+    public static function fromGlobal(stdClass $value): GlobalClass {
+        return GlobalClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGlobal(): stdClass {
+        if (Obj2::validateGlobal($this->global))  {
+            return $this->global->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::global');
+    }
+
+    /**
+     * @param GlobalClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGlobal(GlobalClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return GlobalClass
+     */
+    public function getGlobal(): GlobalClass {
+        if (Obj2::validateGlobal($this->global))  {
+            return $this->global;
+        }
+        throw new Exception('never get to getGlobal Obj2::global');
+    }
+
+    /**
+     * @return GlobalClass
+     */
+    public static function sampleGlobal(): GlobalClass {
+        return GlobalClass::sample(); /*75:global*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Go
+     */
+    public static function fromGo(stdClass $value): Go {
+        return Go::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGo(): stdClass {
+        if (Obj2::validateGo($this->go))  {
+            return $this->go->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::go');
+    }
+
+    /**
+     * @param Go
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGo(Go $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Go
+     */
+    public function getGo(): Go {
+        if (Obj2::validateGo($this->go))  {
+            return $this->go;
+        }
+        throw new Exception('never get to getGo Obj2::go');
+    }
+
+    /**
+     * @return Go
+     */
+    public static function sampleGo(): Go {
+        return Go::sample(); /*76:go*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return GotoClass
+     */
+    public static function fromGoto(stdClass $value): GotoClass {
+        return GotoClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGoto(): stdClass {
+        if (Obj2::validateGoto($this->goto))  {
+            return $this->goto->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::goto');
+    }
+
+    /**
+     * @param GotoClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGoto(GotoClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return GotoClass
+     */
+    public function getGoto(): GotoClass {
+        if (Obj2::validateGoto($this->goto))  {
+            return $this->goto;
+        }
+        throw new Exception('never get to getGoto Obj2::goto');
+    }
+
+    /**
+     * @return GotoClass
+     */
+    public static function sampleGoto(): GotoClass {
+        return GotoClass::sample(); /*77:goto*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Guard
+     */
+    public static function fromGuard(stdClass $value): Guard {
+        return Guard::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGuard(): stdClass {
+        if (Obj2::validateGuard($this->guard))  {
+            return $this->guard->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::guard');
+    }
+
+    /**
+     * @param Guard
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGuard(Guard $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Guard
+     */
+    public function getGuard(): Guard {
+        if (Obj2::validateGuard($this->guard))  {
+            return $this->guard;
+        }
+        throw new Exception('never get to getGuard Obj2::guard');
+    }
+
+    /**
+     * @return Guard
+     */
+    public static function sampleGuard(): Guard {
+        return Guard::sample(); /*78:guard*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return HasOwnProperty
+     */
+    public static function fromHasOwnProperty(stdClass $value): HasOwnProperty {
+        return HasOwnProperty::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toHasOwnProperty(): stdClass {
+        if (Obj2::validateHasOwnProperty($this->hasOwnProperty))  {
+            return $this->hasOwnProperty->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::hasOwnProperty');
+    }
+
+    /**
+     * @param HasOwnProperty
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateHasOwnProperty(HasOwnProperty $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return HasOwnProperty
+     */
+    public function getHasOwnProperty(): HasOwnProperty {
+        if (Obj2::validateHasOwnProperty($this->hasOwnProperty))  {
+            return $this->hasOwnProperty;
+        }
+        throw new Exception('never get to getHasOwnProperty Obj2::hasOwnProperty');
+    }
+
+    /**
+     * @return HasOwnProperty
+     */
+    public static function sampleHasOwnProperty(): HasOwnProperty {
+        return HasOwnProperty::sample(); /*79:hasOwnProperty*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ID
+     */
+    public static function fromID(stdClass $value): ID {
+        return ID::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toID(): stdClass {
+        if (Obj2::validateID($this->id))  {
+            return $this->id->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::id');
+    }
+
+    /**
+     * @param ID
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateID(ID $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ID
+     */
+    public function getID(): ID {
+        if (Obj2::validateID($this->id))  {
+            return $this->id;
+        }
+        throw new Exception('never get to getID Obj2::id');
+    }
+
+    /**
+     * @return ID
+     */
+    public static function sampleID(): ID {
+        return ID::sample(); /*80:id*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return IfClass
+     */
+    public static function fromIf(stdClass $value): IfClass {
+        return IfClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toIf(): stdClass {
+        if (Obj2::validateIf($this->if))  {
+            return $this->if->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::if');
+    }
+
+    /**
+     * @param IfClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIf(IfClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return IfClass
+     */
+    public function getIf(): IfClass {
+        if (Obj2::validateIf($this->if))  {
+            return $this->if;
+        }
+        throw new Exception('never get to getIf Obj2::if');
+    }
+
+    /**
+     * @return IfClass
+     */
+    public static function sampleIf(): IfClass {
+        return IfClass::sample(); /*81:if*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Imp
+     */
+    public static function fromImp(stdClass $value): Imp {
+        return Imp::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toImp(): stdClass {
+        if (Obj2::validateImp($this->imp))  {
+            return $this->imp->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::imp');
+    }
+
+    /**
+     * @param Imp
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImp(Imp $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Imp
+     */
+    public function getImp(): Imp {
+        if (Obj2::validateImp($this->imp))  {
+            return $this->imp;
+        }
+        throw new Exception('never get to getImp Obj2::imp');
+    }
+
+    /**
+     * @return Imp
+     */
+    public static function sampleImp(): Imp {
+        return Imp::sample(); /*82:imp*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ImplementsClass
+     */
+    public static function fromImplements(stdClass $value): ImplementsClass {
+        return ImplementsClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toImplements(): stdClass {
+        if (Obj2::validateImplements($this->implements))  {
+            return $this->implements->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::implements');
+    }
+
+    /**
+     * @param ImplementsClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImplements(ImplementsClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ImplementsClass
+     */
+    public function getImplements(): ImplementsClass {
+        if (Obj2::validateImplements($this->implements))  {
+            return $this->implements;
+        }
+        throw new Exception('never get to getImplements Obj2::implements');
+    }
+
+    /**
+     * @return ImplementsClass
+     */
+    public static function sampleImplements(): ImplementsClass {
+        return ImplementsClass::sample(); /*83:implements*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Implicit
+     */
+    public static function fromImplicit(stdClass $value): Implicit {
+        return Implicit::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toImplicit(): stdClass {
+        if (Obj2::validateImplicit($this->implicit))  {
+            return $this->implicit->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::implicit');
+    }
+
+    /**
+     * @param Implicit
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImplicit(Implicit $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Implicit
+     */
+    public function getImplicit(): Implicit {
+        if (Obj2::validateImplicit($this->implicit))  {
+            return $this->implicit;
+        }
+        throw new Exception('never get to getImplicit Obj2::implicit');
+    }
+
+    /**
+     * @return Implicit
+     */
+    public static function sampleImplicit(): Implicit {
+        return Implicit::sample(); /*84:implicit*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Import
+     */
+    public static function fromImport(stdClass $value): Import {
+        return Import::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toImport(): stdClass {
+        if (Obj2::validateImport($this->import))  {
+            return $this->import->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::import');
+    }
+
+    /**
+     * @param Import
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImport(Import $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Import
+     */
+    public function getImport(): Import {
+        if (Obj2::validateImport($this->import))  {
+            return $this->import;
+        }
+        throw new Exception('never get to getImport Obj2::import');
+    }
+
+    /**
+     * @return Import
+     */
+    public static function sampleImport(): Import {
+        return Import::sample(); /*85:import*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return In
+     */
+    public static function fromIn(stdClass $value): In {
+        return In::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toIn(): stdClass {
+        if (Obj2::validateIn($this->in))  {
+            return $this->in->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::in');
+    }
+
+    /**
+     * @param In
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIn(In $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return In
+     */
+    public function getIn(): In {
+        if (Obj2::validateIn($this->in))  {
+            return $this->in;
+        }
+        throw new Exception('never get to getIn Obj2::in');
+    }
+
+    /**
+     * @return In
+     */
+    public static function sampleIn(): In {
+        return In::sample(); /*86:in*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Indirect
+     */
+    public static function fromIndirect(stdClass $value): Indirect {
+        return Indirect::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toIndirect(): stdClass {
+        if (Obj2::validateIndirect($this->indirect))  {
+            return $this->indirect->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::indirect');
+    }
+
+    /**
+     * @param Indirect
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIndirect(Indirect $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Indirect
+     */
+    public function getIndirect(): Indirect {
+        if (Obj2::validateIndirect($this->indirect))  {
+            return $this->indirect;
+        }
+        throw new Exception('never get to getIndirect Obj2::indirect');
+    }
+
+    /**
+     * @return Indirect
+     */
+    public static function sampleIndirect(): Indirect {
+        return Indirect::sample(); /*87:indirect*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Infix
+     */
+    public static function fromInfix(stdClass $value): Infix {
+        return Infix::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInfix(): stdClass {
+        if (Obj2::validateInfix($this->infix))  {
+            return $this->infix->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::infix');
+    }
+
+    /**
+     * @param Infix
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInfix(Infix $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Infix
+     */
+    public function getInfix(): Infix {
+        if (Obj2::validateInfix($this->infix))  {
+            return $this->infix;
+        }
+        throw new Exception('never get to getInfix Obj2::infix');
+    }
+
+    /**
+     * @return Infix
+     */
+    public static function sampleInfix(): Infix {
+        return Infix::sample(); /*88:infix*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Init
+     */
+    public static function fromInit(stdClass $value): Init {
+        return Init::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInit(): stdClass {
+        if (Obj2::validateInit($this->init))  {
+            return $this->init->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::init');
+    }
+
+    /**
+     * @param Init
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInit(Init $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Init
+     */
+    public function getInit(): Init {
+        if (Obj2::validateInit($this->init))  {
+            return $this->init;
+        }
+        throw new Exception('never get to getInit Obj2::init');
+    }
+
+    /**
+     * @return Init
+     */
+    public static function sampleInit(): Init {
+        return Init::sample(); /*89:init*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Inline
+     */
+    public static function fromInline(stdClass $value): Inline {
+        return Inline::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInline(): stdClass {
+        if (Obj2::validateInline($this->inline))  {
+            return $this->inline->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::inline');
+    }
+
+    /**
+     * @param Inline
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInline(Inline $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Inline
+     */
+    public function getInline(): Inline {
+        if (Obj2::validateInline($this->inline))  {
+            return $this->inline;
+        }
+        throw new Exception('never get to getInline Obj2::inline');
+    }
+
+    /**
+     * @return Inline
+     */
+    public static function sampleInline(): Inline {
+        return Inline::sample(); /*90:inline*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Inout
+     */
+    public static function fromInout(stdClass $value): Inout {
+        return Inout::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInout(): stdClass {
+        if (Obj2::validateInout($this->inout))  {
+            return $this->inout->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::inout');
+    }
+
+    /**
+     * @param Inout
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInout(Inout $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Inout
+     */
+    public function getInout(): Inout {
+        if (Obj2::validateInout($this->inout))  {
+            return $this->inout;
+        }
+        throw new Exception('never get to getInout Obj2::inout');
+    }
+
+    /**
+     * @return Inout
+     */
+    public static function sampleInout(): Inout {
+        return Inout::sample(); /*91:inout*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return InstanceofClass
+     */
+    public static function fromInstanceof(stdClass $value): InstanceofClass {
+        return InstanceofClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInstanceof(): stdClass {
+        if (Obj2::validateInstanceof($this->instanceof))  {
+            return $this->instanceof->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::instanceof');
+    }
+
+    /**
+     * @param InstanceofClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInstanceof(InstanceofClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return InstanceofClass
+     */
+    public function getInstanceof(): InstanceofClass {
+        if (Obj2::validateInstanceof($this->instanceof))  {
+            return $this->instanceof;
+        }
+        throw new Exception('never get to getInstanceof Obj2::instanceof');
+    }
+
+    /**
+     * @return InstanceofClass
+     */
+    public static function sampleInstanceof(): InstanceofClass {
+        return InstanceofClass::sample(); /*92:instanceof*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return IntClass
+     */
+    public static function fromInt(stdClass $value): IntClass {
+        return IntClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInt(): stdClass {
+        if (Obj2::validateInt($this->int))  {
+            return $this->int->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::int');
+    }
+
+    /**
+     * @param IntClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInt(IntClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return IntClass
+     */
+    public function getInt(): IntClass {
+        if (Obj2::validateInt($this->int))  {
+            return $this->int;
+        }
+        throw new Exception('never get to getInt Obj2::int');
+    }
+
+    /**
+     * @return IntClass
+     */
+    public static function sampleInt(): IntClass {
+        return IntClass::sample(); /*93:int*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return InterfaceClass
+     */
+    public static function fromInterface(stdClass $value): InterfaceClass {
+        return InterfaceClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInterface(): stdClass {
+        if (Obj2::validateInterface($this->interface))  {
+            return $this->interface->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::interface');
+    }
+
+    /**
+     * @param InterfaceClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInterface(InterfaceClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return InterfaceClass
+     */
+    public function getInterface(): InterfaceClass {
+        if (Obj2::validateInterface($this->interface))  {
+            return $this->interface;
+        }
+        throw new Exception('never get to getInterface Obj2::interface');
+    }
+
+    /**
+     * @return InterfaceClass
+     */
+    public static function sampleInterface(): InterfaceClass {
+        return InterfaceClass::sample(); /*94:interface*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Internal
+     */
+    public static function fromInternal(stdClass $value): Internal {
+        return Internal::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toInternal(): stdClass {
+        if (Obj2::validateInternal($this->internal))  {
+            return $this->internal->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::internal');
+    }
+
+    /**
+     * @param Internal
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInternal(Internal $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Internal
+     */
+    public function getInternal(): Internal {
+        if (Obj2::validateInternal($this->internal))  {
+            return $this->internal;
+        }
+        throw new Exception('never get to getInternal Obj2::internal');
+    }
+
+    /**
+     * @return Internal
+     */
+    public static function sampleInternal(): Internal {
+        return Internal::sample(); /*95:internal*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj2False
+     */
+    public static function fromObj2False(stdClass $value): Obj2False {
+        return Obj2False::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj2False(): stdClass {
+        if (Obj2::validateObj2False($this->obj2False))  {
+            return $this->obj2False->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::obj2False');
+    }
+
+    /**
+     * @param Obj2False
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj2False(Obj2False $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj2False
+     */
+    public function getObj2False(): Obj2False {
+        if (Obj2::validateObj2False($this->obj2False))  {
+            return $this->obj2False;
+        }
+        throw new Exception('never get to getObj2False Obj2::obj2False');
+    }
+
+    /**
+     * @return Obj2False
+     */
+    public static function sampleObj2False(): Obj2False {
+        return Obj2False::sample(); /*96:obj2False*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj2::validateDef($this->def)
+        || Obj2::validateDefault($this->default)
+        || Obj2::validateDefer($this->defer)
+        || Obj2::validateDeinit($this->deinit)
+        || Obj2::validateDel($this->del)
+        || Obj2::validateDelegate($this->delegate)
+        || Obj2::validateDelete($this->delete)
+        || Obj2::validateDict($this->dict)
+        || Obj2::validateDictionary($this->dictionary)
+        || Obj2::validateDidSet($this->didSet)
+        || Obj2::validateDo($this->do)
+        || Obj2::validateDouble($this->double)
+        || Obj2::validateDummy($this->dummy)
+        || Obj2::validateDynamic($this->dynamic)
+        || Obj2::validateDynamicCast($this->dynamicCast)
+        || Obj2::validateElif($this->elif)
+        || Obj2::validateElse($this->else)
+        || Obj2::validateEncodeQuickType($this->encodeQuickType)
+        || Obj2::validateEnum($this->enum)
+        || Obj2::validateEqualityContract($this->equalityContract)
+        || Obj2::validateEvent($this->event)
+        || Obj2::validateExcept($this->except)
+        || Obj2::validateException($this->exception)
+        || Obj2::validateExplicit($this->explicit)
+        || Obj2::validateExport($this->export)
+        || Obj2::validateExposing($this->exposing)
+        || Obj2::validateExtends($this->extends)
+        || Obj2::validateExtension($this->extension)
+        || Obj2::validateExtern($this->extern)
+        || Obj2::validateFallthrough($this->fallthrough)
+        || Obj2::validateFalse($this->false)
+        || Obj2::validateFileprivate($this->fileprivate)
+        || Obj2::validateFinal($this->final)
+        || Obj2::validateFinally($this->finally)
+        || Obj2::validateFixed($this->fixed)
+        || Obj2::validateFloat($this->float)
+        || Obj2::validateFor($this->for)
+        || Obj2::validateForeach($this->foreach)
+        || Obj2::validateFriend($this->friend)
+        || Obj2::validateFrom($this->from)
+        || Obj2::validateFromJSON($this->fromJSON)
+        || Obj2::validateFunc($this->func)
+        || Obj2::validateFunction($this->function)
+        || Obj2::validateGet($this->get)
+        || Obj2::validateGlobal($this->global)
+        || Obj2::validateGo($this->go)
+        || Obj2::validateGoto($this->goto)
+        || Obj2::validateGuard($this->guard)
+        || Obj2::validateHasOwnProperty($this->hasOwnProperty)
+        || Obj2::validateID($this->id)
+        || Obj2::validateIf($this->if)
+        || Obj2::validateImp($this->imp)
+        || Obj2::validateImplements($this->implements)
+        || Obj2::validateImplicit($this->implicit)
+        || Obj2::validateImport($this->import)
+        || Obj2::validateIn($this->in)
+        || Obj2::validateIndirect($this->indirect)
+        || Obj2::validateInfix($this->infix)
+        || Obj2::validateInit($this->init)
+        || Obj2::validateInline($this->inline)
+        || Obj2::validateInout($this->inout)
+        || Obj2::validateInstanceof($this->instanceof)
+        || Obj2::validateInt($this->int)
+        || Obj2::validateInterface($this->interface)
+        || Obj2::validateInternal($this->internal)
+        || Obj2::validateObj2False($this->obj2False);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'def'} = $this->toDef();
+        $out->{'default'} = $this->toDefault();
+        $out->{'defer'} = $this->toDefer();
+        $out->{'deinit'} = $this->toDeinit();
+        $out->{'del'} = $this->toDel();
+        $out->{'delegate'} = $this->toDelegate();
+        $out->{'delete'} = $this->toDelete();
+        $out->{'dict'} = $this->toDict();
+        $out->{'dictionary'} = $this->toDictionary();
+        $out->{'didSet'} = $this->toDidSet();
+        $out->{'do'} = $this->toDo();
+        $out->{'double'} = $this->toDouble();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'dynamic'} = $this->toDynamic();
+        $out->{'dynamic_cast'} = $this->toDynamicCast();
+        $out->{'elif'} = $this->toElif();
+        $out->{'else'} = $this->toElse();
+        $out->{'encode_quick_type'} = $this->toEncodeQuickType();
+        $out->{'enum'} = $this->toEnum();
+        $out->{'equalityContract'} = $this->toEqualityContract();
+        $out->{'event'} = $this->toEvent();
+        $out->{'except'} = $this->toExcept();
+        $out->{'exception'} = $this->toException();
+        $out->{'explicit'} = $this->toExplicit();
+        $out->{'export'} = $this->toExport();
+        $out->{'exposing'} = $this->toExposing();
+        $out->{'extends'} = $this->toExtends();
+        $out->{'extension'} = $this->toExtension();
+        $out->{'extern'} = $this->toExtern();
+        $out->{'fallthrough'} = $this->toFallthrough();
+        $out->{'False'} = $this->toFalse();
+        $out->{'fileprivate'} = $this->toFileprivate();
+        $out->{'final'} = $this->toFinal();
+        $out->{'finally'} = $this->toFinally();
+        $out->{'fixed'} = $this->toFixed();
+        $out->{'float'} = $this->toFloat();
+        $out->{'for'} = $this->toFor();
+        $out->{'foreach'} = $this->toForeach();
+        $out->{'friend'} = $this->toFriend();
+        $out->{'from'} = $this->toFrom();
+        $out->{'from_json'} = $this->toFromJSON();
+        $out->{'func'} = $this->toFunc();
+        $out->{'function'} = $this->toFunction();
+        $out->{'get'} = $this->toGet();
+        $out->{'global'} = $this->toGlobal();
+        $out->{'go'} = $this->toGo();
+        $out->{'goto'} = $this->toGoto();
+        $out->{'guard'} = $this->toGuard();
+        $out->{'hasOwnProperty'} = $this->toHasOwnProperty();
+        $out->{'id'} = $this->toID();
+        $out->{'if'} = $this->toIf();
+        $out->{'IMP'} = $this->toImp();
+        $out->{'implements'} = $this->toImplements();
+        $out->{'implicit'} = $this->toImplicit();
+        $out->{'import'} = $this->toImport();
+        $out->{'in'} = $this->toIn();
+        $out->{'indirect'} = $this->toIndirect();
+        $out->{'infix'} = $this->toInfix();
+        $out->{'init'} = $this->toInit();
+        $out->{'inline'} = $this->toInline();
+        $out->{'inout'} = $this->toInout();
+        $out->{'instanceof'} = $this->toInstanceof();
+        $out->{'int'} = $this->toInt();
+        $out->{'interface'} = $this->toInterface();
+        $out->{'internal'} = $this->toInternal();
+        $out->{'false'} = $this->toObj2False();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj2
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj2 {
+        return new Obj2(
+         Obj2::fromDef($obj->{'def'})
+        ,Obj2::fromDefault($obj->{'default'})
+        ,Obj2::fromDefer($obj->{'defer'})
+        ,Obj2::fromDeinit($obj->{'deinit'})
+        ,Obj2::fromDel($obj->{'del'})
+        ,Obj2::fromDelegate($obj->{'delegate'})
+        ,Obj2::fromDelete($obj->{'delete'})
+        ,Obj2::fromDict($obj->{'dict'})
+        ,Obj2::fromDictionary($obj->{'dictionary'})
+        ,Obj2::fromDidSet($obj->{'didSet'})
+        ,Obj2::fromDo($obj->{'do'})
+        ,Obj2::fromDouble($obj->{'double'})
+        ,Obj2::fromDummy($obj->{'dummy'})
+        ,Obj2::fromDynamic($obj->{'dynamic'})
+        ,Obj2::fromDynamicCast($obj->{'dynamic_cast'})
+        ,Obj2::fromElif($obj->{'elif'})
+        ,Obj2::fromElse($obj->{'else'})
+        ,Obj2::fromEncodeQuickType($obj->{'encode_quick_type'})
+        ,Obj2::fromEnum($obj->{'enum'})
+        ,Obj2::fromEqualityContract($obj->{'equalityContract'})
+        ,Obj2::fromEvent($obj->{'event'})
+        ,Obj2::fromExcept($obj->{'except'})
+        ,Obj2::fromException($obj->{'exception'})
+        ,Obj2::fromExplicit($obj->{'explicit'})
+        ,Obj2::fromExport($obj->{'export'})
+        ,Obj2::fromExposing($obj->{'exposing'})
+        ,Obj2::fromExtends($obj->{'extends'})
+        ,Obj2::fromExtension($obj->{'extension'})
+        ,Obj2::fromExtern($obj->{'extern'})
+        ,Obj2::fromFallthrough($obj->{'fallthrough'})
+        ,Obj2::fromFalse($obj->{'False'})
+        ,Obj2::fromFileprivate($obj->{'fileprivate'})
+        ,Obj2::fromFinal($obj->{'final'})
+        ,Obj2::fromFinally($obj->{'finally'})
+        ,Obj2::fromFixed($obj->{'fixed'})
+        ,Obj2::fromFloat($obj->{'float'})
+        ,Obj2::fromFor($obj->{'for'})
+        ,Obj2::fromForeach($obj->{'foreach'})
+        ,Obj2::fromFriend($obj->{'friend'})
+        ,Obj2::fromFrom($obj->{'from'})
+        ,Obj2::fromFromJSON($obj->{'from_json'})
+        ,Obj2::fromFunc($obj->{'func'})
+        ,Obj2::fromFunction($obj->{'function'})
+        ,Obj2::fromGet($obj->{'get'})
+        ,Obj2::fromGlobal($obj->{'global'})
+        ,Obj2::fromGo($obj->{'go'})
+        ,Obj2::fromGoto($obj->{'goto'})
+        ,Obj2::fromGuard($obj->{'guard'})
+        ,Obj2::fromHasOwnProperty($obj->{'hasOwnProperty'})
+        ,Obj2::fromID($obj->{'id'})
+        ,Obj2::fromIf($obj->{'if'})
+        ,Obj2::fromImp($obj->{'IMP'})
+        ,Obj2::fromImplements($obj->{'implements'})
+        ,Obj2::fromImplicit($obj->{'implicit'})
+        ,Obj2::fromImport($obj->{'import'})
+        ,Obj2::fromIn($obj->{'in'})
+        ,Obj2::fromIndirect($obj->{'indirect'})
+        ,Obj2::fromInfix($obj->{'infix'})
+        ,Obj2::fromInit($obj->{'init'})
+        ,Obj2::fromInline($obj->{'inline'})
+        ,Obj2::fromInout($obj->{'inout'})
+        ,Obj2::fromInstanceof($obj->{'instanceof'})
+        ,Obj2::fromInt($obj->{'int'})
+        ,Obj2::fromInterface($obj->{'interface'})
+        ,Obj2::fromInternal($obj->{'internal'})
+        ,Obj2::fromObj2False($obj->{'false'})
+        );
+    }
+
+    /**
+     * @return Obj2
+     */
+    public static function sample(): Obj2 {
+        return new Obj2(
+         Obj2::sampleDef()
+        ,Obj2::sampleDefault()
+        ,Obj2::sampleDefer()
+        ,Obj2::sampleDeinit()
+        ,Obj2::sampleDel()
+        ,Obj2::sampleDelegate()
+        ,Obj2::sampleDelete()
+        ,Obj2::sampleDict()
+        ,Obj2::sampleDictionary()
+        ,Obj2::sampleDidSet()
+        ,Obj2::sampleDo()
+        ,Obj2::sampleDouble()
+        ,Obj2::sampleDummy()
+        ,Obj2::sampleDynamic()
+        ,Obj2::sampleDynamicCast()
+        ,Obj2::sampleElif()
+        ,Obj2::sampleElse()
+        ,Obj2::sampleEncodeQuickType()
+        ,Obj2::sampleEnum()
+        ,Obj2::sampleEqualityContract()
+        ,Obj2::sampleEvent()
+        ,Obj2::sampleExcept()
+        ,Obj2::sampleException()
+        ,Obj2::sampleExplicit()
+        ,Obj2::sampleExport()
+        ,Obj2::sampleExposing()
+        ,Obj2::sampleExtends()
+        ,Obj2::sampleExtension()
+        ,Obj2::sampleExtern()
+        ,Obj2::sampleFallthrough()
+        ,Obj2::sampleFalse()
+        ,Obj2::sampleFileprivate()
+        ,Obj2::sampleFinal()
+        ,Obj2::sampleFinally()
+        ,Obj2::sampleFixed()
+        ,Obj2::sampleFloat()
+        ,Obj2::sampleFor()
+        ,Obj2::sampleForeach()
+        ,Obj2::sampleFriend()
+        ,Obj2::sampleFrom()
+        ,Obj2::sampleFromJSON()
+        ,Obj2::sampleFunc()
+        ,Obj2::sampleFunction()
+        ,Obj2::sampleGet()
+        ,Obj2::sampleGlobal()
+        ,Obj2::sampleGo()
+        ,Obj2::sampleGoto()
+        ,Obj2::sampleGuard()
+        ,Obj2::sampleHasOwnProperty()
+        ,Obj2::sampleID()
+        ,Obj2::sampleIf()
+        ,Obj2::sampleImp()
+        ,Obj2::sampleImplements()
+        ,Obj2::sampleImplicit()
+        ,Obj2::sampleImport()
+        ,Obj2::sampleIn()
+        ,Obj2::sampleIndirect()
+        ,Obj2::sampleInfix()
+        ,Obj2::sampleInit()
+        ,Obj2::sampleInline()
+        ,Obj2::sampleInout()
+        ,Obj2::sampleInstanceof()
+        ,Obj2::sampleInt()
+        ,Obj2::sampleInterface()
+        ,Obj2::sampleInternal()
+        ,Obj2::sampleObj2False()
+        );
+    }
+}
+
+// This is an autogenerated file:Def
+
+class Def {
+    private int $def; // json:def Required
+
+    /**
+     * @param int $def
+     */
+    public function __construct(int $def) {
+        $this->def = $def;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDef(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDef(): int {
+        if (Def::validateDef($this->def))  {
+            return $this->def; /*int*/
+        }
+        throw new Exception('never get to this Def::def');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDef(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDef(): int {
+        if (Def::validateDef($this->def))  {
+            return $this->def;
+        }
+        throw new Exception('never get to getDef Def::def');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDef(): int {
+        return 31; /*31:def*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Def::validateDef($this->def);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'def'} = $this->toDef();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Def
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Def {
+        return new Def(
+         Def::fromDef($obj->{'def'})
+        );
+    }
+
+    /**
+     * @return Def
+     */
+    public static function sample(): Def {
+        return new Def(
+         Def::sampleDef()
+        );
+    }
+}
+
+// This is an autogenerated file:DefaultClass
+
+class DefaultClass {
+    private int $default; // json:default Required
+
+    /**
+     * @param int $default
+     */
+    public function __construct(int $default) {
+        $this->default = $default;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDefault(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDefault(): int {
+        if (DefaultClass::validateDefault($this->default))  {
+            return $this->default; /*int*/
+        }
+        throw new Exception('never get to this DefaultClass::default');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDefault(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDefault(): int {
+        if (DefaultClass::validateDefault($this->default))  {
+            return $this->default;
+        }
+        throw new Exception('never get to getDefault DefaultClass::default');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDefault(): int {
+        return 31; /*31:default*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DefaultClass::validateDefault($this->default);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'default'} = $this->toDefault();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DefaultClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DefaultClass {
+        return new DefaultClass(
+         DefaultClass::fromDefault($obj->{'default'})
+        );
+    }
+
+    /**
+     * @return DefaultClass
+     */
+    public static function sample(): DefaultClass {
+        return new DefaultClass(
+         DefaultClass::sampleDefault()
+        );
+    }
+}
+
+// This is an autogenerated file:Defer
+
+class Defer {
+    private int $defer; // json:defer Required
+
+    /**
+     * @param int $defer
+     */
+    public function __construct(int $defer) {
+        $this->defer = $defer;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDefer(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDefer(): int {
+        if (Defer::validateDefer($this->defer))  {
+            return $this->defer; /*int*/
+        }
+        throw new Exception('never get to this Defer::defer');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDefer(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDefer(): int {
+        if (Defer::validateDefer($this->defer))  {
+            return $this->defer;
+        }
+        throw new Exception('never get to getDefer Defer::defer');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDefer(): int {
+        return 31; /*31:defer*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Defer::validateDefer($this->defer);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'defer'} = $this->toDefer();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Defer
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Defer {
+        return new Defer(
+         Defer::fromDefer($obj->{'defer'})
+        );
+    }
+
+    /**
+     * @return Defer
+     */
+    public static function sample(): Defer {
+        return new Defer(
+         Defer::sampleDefer()
+        );
+    }
+}
+
+// This is an autogenerated file:Deinit
+
+class Deinit {
+    private int $deinit; // json:deinit Required
+
+    /**
+     * @param int $deinit
+     */
+    public function __construct(int $deinit) {
+        $this->deinit = $deinit;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDeinit(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDeinit(): int {
+        if (Deinit::validateDeinit($this->deinit))  {
+            return $this->deinit; /*int*/
+        }
+        throw new Exception('never get to this Deinit::deinit');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeinit(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDeinit(): int {
+        if (Deinit::validateDeinit($this->deinit))  {
+            return $this->deinit;
+        }
+        throw new Exception('never get to getDeinit Deinit::deinit');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDeinit(): int {
+        return 31; /*31:deinit*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Deinit::validateDeinit($this->deinit);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'deinit'} = $this->toDeinit();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Deinit
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Deinit {
+        return new Deinit(
+         Deinit::fromDeinit($obj->{'deinit'})
+        );
+    }
+
+    /**
+     * @return Deinit
+     */
+    public static function sample(): Deinit {
+        return new Deinit(
+         Deinit::sampleDeinit()
+        );
+    }
+}
+
+// This is an autogenerated file:Del
+
+class Del {
+    private int $del; // json:del Required
+
+    /**
+     * @param int $del
+     */
+    public function __construct(int $del) {
+        $this->del = $del;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDel(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDel(): int {
+        if (Del::validateDel($this->del))  {
+            return $this->del; /*int*/
+        }
+        throw new Exception('never get to this Del::del');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDel(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDel(): int {
+        if (Del::validateDel($this->del))  {
+            return $this->del;
+        }
+        throw new Exception('never get to getDel Del::del');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDel(): int {
+        return 31; /*31:del*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Del::validateDel($this->del);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'del'} = $this->toDel();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Del
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Del {
+        return new Del(
+         Del::fromDel($obj->{'del'})
+        );
+    }
+
+    /**
+     * @return Del
+     */
+    public static function sample(): Del {
+        return new Del(
+         Del::sampleDel()
+        );
+    }
+}
+
+// This is an autogenerated file:Delegate
+
+class Delegate {
+    private int $delegate; // json:delegate Required
+
+    /**
+     * @param int $delegate
+     */
+    public function __construct(int $delegate) {
+        $this->delegate = $delegate;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDelegate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDelegate(): int {
+        if (Delegate::validateDelegate($this->delegate))  {
+            return $this->delegate; /*int*/
+        }
+        throw new Exception('never get to this Delegate::delegate');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDelegate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDelegate(): int {
+        if (Delegate::validateDelegate($this->delegate))  {
+            return $this->delegate;
+        }
+        throw new Exception('never get to getDelegate Delegate::delegate');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDelegate(): int {
+        return 31; /*31:delegate*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Delegate::validateDelegate($this->delegate);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'delegate'} = $this->toDelegate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Delegate
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Delegate {
+        return new Delegate(
+         Delegate::fromDelegate($obj->{'delegate'})
+        );
+    }
+
+    /**
+     * @return Delegate
+     */
+    public static function sample(): Delegate {
+        return new Delegate(
+         Delegate::sampleDelegate()
+        );
+    }
+}
+
+// This is an autogenerated file:Delete
+
+class Delete {
+    private int $delete; // json:delete Required
+
+    /**
+     * @param int $delete
+     */
+    public function __construct(int $delete) {
+        $this->delete = $delete;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDelete(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDelete(): int {
+        if (Delete::validateDelete($this->delete))  {
+            return $this->delete; /*int*/
+        }
+        throw new Exception('never get to this Delete::delete');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDelete(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDelete(): int {
+        if (Delete::validateDelete($this->delete))  {
+            return $this->delete;
+        }
+        throw new Exception('never get to getDelete Delete::delete');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDelete(): int {
+        return 31; /*31:delete*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Delete::validateDelete($this->delete);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'delete'} = $this->toDelete();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Delete
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Delete {
+        return new Delete(
+         Delete::fromDelete($obj->{'delete'})
+        );
+    }
+
+    /**
+     * @return Delete
+     */
+    public static function sample(): Delete {
+        return new Delete(
+         Delete::sampleDelete()
+        );
+    }
+}
+
+// This is an autogenerated file:Dict
+
+class Dict {
+    private int $dict; // json:dict Required
+
+    /**
+     * @param int $dict
+     */
+    public function __construct(int $dict) {
+        $this->dict = $dict;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDict(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDict(): int {
+        if (Dict::validateDict($this->dict))  {
+            return $this->dict; /*int*/
+        }
+        throw new Exception('never get to this Dict::dict');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDict(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDict(): int {
+        if (Dict::validateDict($this->dict))  {
+            return $this->dict;
+        }
+        throw new Exception('never get to getDict Dict::dict');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDict(): int {
+        return 31; /*31:dict*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Dict::validateDict($this->dict);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dict'} = $this->toDict();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Dict
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Dict {
+        return new Dict(
+         Dict::fromDict($obj->{'dict'})
+        );
+    }
+
+    /**
+     * @return Dict
+     */
+    public static function sample(): Dict {
+        return new Dict(
+         Dict::sampleDict()
+        );
+    }
+}
+
+// This is an autogenerated file:Dictionary
+
+class Dictionary {
+    private int $dictionary; // json:dictionary Required
+
+    /**
+     * @param int $dictionary
+     */
+    public function __construct(int $dictionary) {
+        $this->dictionary = $dictionary;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDictionary(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDictionary(): int {
+        if (Dictionary::validateDictionary($this->dictionary))  {
+            return $this->dictionary; /*int*/
+        }
+        throw new Exception('never get to this Dictionary::dictionary');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDictionary(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDictionary(): int {
+        if (Dictionary::validateDictionary($this->dictionary))  {
+            return $this->dictionary;
+        }
+        throw new Exception('never get to getDictionary Dictionary::dictionary');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDictionary(): int {
+        return 31; /*31:dictionary*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Dictionary::validateDictionary($this->dictionary);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dictionary'} = $this->toDictionary();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Dictionary
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Dictionary {
+        return new Dictionary(
+         Dictionary::fromDictionary($obj->{'dictionary'})
+        );
+    }
+
+    /**
+     * @return Dictionary
+     */
+    public static function sample(): Dictionary {
+        return new Dictionary(
+         Dictionary::sampleDictionary()
+        );
+    }
+}
+
+// This is an autogenerated file:DidSet
+
+class DidSet {
+    private int $didSet; // json:didSet Required
+
+    /**
+     * @param int $didSet
+     */
+    public function __construct(int $didSet) {
+        $this->didSet = $didSet;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDidSet(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDidSet(): int {
+        if (DidSet::validateDidSet($this->didSet))  {
+            return $this->didSet; /*int*/
+        }
+        throw new Exception('never get to this DidSet::didSet');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDidSet(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDidSet(): int {
+        if (DidSet::validateDidSet($this->didSet))  {
+            return $this->didSet;
+        }
+        throw new Exception('never get to getDidSet DidSet::didSet');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDidSet(): int {
+        return 31; /*31:didSet*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DidSet::validateDidSet($this->didSet);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'didSet'} = $this->toDidSet();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DidSet
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DidSet {
+        return new DidSet(
+         DidSet::fromDidSet($obj->{'didSet'})
+        );
+    }
+
+    /**
+     * @return DidSet
+     */
+    public static function sample(): DidSet {
+        return new DidSet(
+         DidSet::sampleDidSet()
+        );
+    }
+}
+
+// This is an autogenerated file:DoClass
+
+class DoClass {
+    private int $do; // json:do Required
+
+    /**
+     * @param int $do
+     */
+    public function __construct(int $do) {
+        $this->do = $do;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDo(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDo(): int {
+        if (DoClass::validateDo($this->do))  {
+            return $this->do; /*int*/
+        }
+        throw new Exception('never get to this DoClass::do');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDo(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDo(): int {
+        if (DoClass::validateDo($this->do))  {
+            return $this->do;
+        }
+        throw new Exception('never get to getDo DoClass::do');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDo(): int {
+        return 31; /*31:do*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DoClass::validateDo($this->do);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'do'} = $this->toDo();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DoClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DoClass {
+        return new DoClass(
+         DoClass::fromDo($obj->{'do'})
+        );
+    }
+
+    /**
+     * @return DoClass
+     */
+    public static function sample(): DoClass {
+        return new DoClass(
+         DoClass::sampleDo()
+        );
+    }
+}
+
+// This is an autogenerated file:Double
+
+class Double {
+    private int $double; // json:double Required
+
+    /**
+     * @param int $double
+     */
+    public function __construct(int $double) {
+        $this->double = $double;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDouble(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDouble(): int {
+        if (Double::validateDouble($this->double))  {
+            return $this->double; /*int*/
+        }
+        throw new Exception('never get to this Double::double');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDouble(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDouble(): int {
+        if (Double::validateDouble($this->double))  {
+            return $this->double;
+        }
+        throw new Exception('never get to getDouble Double::double');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDouble(): int {
+        return 31; /*31:double*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Double::validateDouble($this->double);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'double'} = $this->toDouble();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Double
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Double {
+        return new Double(
+         Double::fromDouble($obj->{'double'})
+        );
+    }
+
+    /**
+     * @return Double
+     */
+    public static function sample(): Double {
+        return new Double(
+         Double::sampleDouble()
+        );
+    }
+}
+
+// This is an autogenerated file:Dynamic
+
+class Dynamic {
+    private int $dynamic; // json:dynamic Required
+
+    /**
+     * @param int $dynamic
+     */
+    public function __construct(int $dynamic) {
+        $this->dynamic = $dynamic;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDynamic(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDynamic(): int {
+        if (Dynamic::validateDynamic($this->dynamic))  {
+            return $this->dynamic; /*int*/
+        }
+        throw new Exception('never get to this Dynamic::dynamic');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDynamic(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDynamic(): int {
+        if (Dynamic::validateDynamic($this->dynamic))  {
+            return $this->dynamic;
+        }
+        throw new Exception('never get to getDynamic Dynamic::dynamic');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDynamic(): int {
+        return 31; /*31:dynamic*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Dynamic::validateDynamic($this->dynamic);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dynamic'} = $this->toDynamic();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Dynamic
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Dynamic {
+        return new Dynamic(
+         Dynamic::fromDynamic($obj->{'dynamic'})
+        );
+    }
+
+    /**
+     * @return Dynamic
+     */
+    public static function sample(): Dynamic {
+        return new Dynamic(
+         Dynamic::sampleDynamic()
+        );
+    }
+}
+
+// This is an autogenerated file:DynamicCast
+
+class DynamicCast {
+    private int $dynamicCast; // json:dynamic_cast Required
+
+    /**
+     * @param int $dynamicCast
+     */
+    public function __construct(int $dynamicCast) {
+        $this->dynamicCast = $dynamicCast;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDynamicCast(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDynamicCast(): int {
+        if (DynamicCast::validateDynamicCast($this->dynamicCast))  {
+            return $this->dynamicCast; /*int*/
+        }
+        throw new Exception('never get to this DynamicCast::dynamicCast');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDynamicCast(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDynamicCast(): int {
+        if (DynamicCast::validateDynamicCast($this->dynamicCast))  {
+            return $this->dynamicCast;
+        }
+        throw new Exception('never get to getDynamicCast DynamicCast::dynamicCast');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDynamicCast(): int {
+        return 31; /*31:dynamicCast*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DynamicCast::validateDynamicCast($this->dynamicCast);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dynamic_cast'} = $this->toDynamicCast();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DynamicCast
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DynamicCast {
+        return new DynamicCast(
+         DynamicCast::fromDynamicCast($obj->{'dynamic_cast'})
+        );
+    }
+
+    /**
+     * @return DynamicCast
+     */
+    public static function sample(): DynamicCast {
+        return new DynamicCast(
+         DynamicCast::sampleDynamicCast()
+        );
+    }
+}
+
+// This is an autogenerated file:Elif
+
+class Elif {
+    private int $elif; // json:elif Required
+
+    /**
+     * @param int $elif
+     */
+    public function __construct(int $elif) {
+        $this->elif = $elif;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromElif(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toElif(): int {
+        if (Elif::validateElif($this->elif))  {
+            return $this->elif; /*int*/
+        }
+        throw new Exception('never get to this Elif::elif');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateElif(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getElif(): int {
+        if (Elif::validateElif($this->elif))  {
+            return $this->elif;
+        }
+        throw new Exception('never get to getElif Elif::elif');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleElif(): int {
+        return 31; /*31:elif*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Elif::validateElif($this->elif);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'elif'} = $this->toElif();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Elif
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Elif {
+        return new Elif(
+         Elif::fromElif($obj->{'elif'})
+        );
+    }
+
+    /**
+     * @return Elif
+     */
+    public static function sample(): Elif {
+        return new Elif(
+         Elif::sampleElif()
+        );
+    }
+}
+
+// This is an autogenerated file:ElseClass
+
+class ElseClass {
+    private int $else; // json:else Required
+
+    /**
+     * @param int $else
+     */
+    public function __construct(int $else) {
+        $this->else = $else;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromElse(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toElse(): int {
+        if (ElseClass::validateElse($this->else))  {
+            return $this->else; /*int*/
+        }
+        throw new Exception('never get to this ElseClass::else');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateElse(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getElse(): int {
+        if (ElseClass::validateElse($this->else))  {
+            return $this->else;
+        }
+        throw new Exception('never get to getElse ElseClass::else');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleElse(): int {
+        return 31; /*31:else*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ElseClass::validateElse($this->else);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'else'} = $this->toElse();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ElseClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ElseClass {
+        return new ElseClass(
+         ElseClass::fromElse($obj->{'else'})
+        );
+    }
+
+    /**
+     * @return ElseClass
+     */
+    public static function sample(): ElseClass {
+        return new ElseClass(
+         ElseClass::sampleElse()
+        );
+    }
+}
+
+// This is an autogenerated file:EncodeQuickType
+
+class EncodeQuickType {
+    private int $encodeQuickType; // json:encode_quick_type Required
+
+    /**
+     * @param int $encodeQuickType
+     */
+    public function __construct(int $encodeQuickType) {
+        $this->encodeQuickType = $encodeQuickType;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromEncodeQuickType(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toEncodeQuickType(): int {
+        if (EncodeQuickType::validateEncodeQuickType($this->encodeQuickType))  {
+            return $this->encodeQuickType; /*int*/
+        }
+        throw new Exception('never get to this EncodeQuickType::encodeQuickType');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEncodeQuickType(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getEncodeQuickType(): int {
+        if (EncodeQuickType::validateEncodeQuickType($this->encodeQuickType))  {
+            return $this->encodeQuickType;
+        }
+        throw new Exception('never get to getEncodeQuickType EncodeQuickType::encodeQuickType');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleEncodeQuickType(): int {
+        return 31; /*31:encodeQuickType*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return EncodeQuickType::validateEncodeQuickType($this->encodeQuickType);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'encode_quick_type'} = $this->toEncodeQuickType();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return EncodeQuickType
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): EncodeQuickType {
+        return new EncodeQuickType(
+         EncodeQuickType::fromEncodeQuickType($obj->{'encode_quick_type'})
+        );
+    }
+
+    /**
+     * @return EncodeQuickType
+     */
+    public static function sample(): EncodeQuickType {
+        return new EncodeQuickType(
+         EncodeQuickType::sampleEncodeQuickType()
+        );
+    }
+}
+
+// This is an autogenerated file:EnumClass
+
+class EnumClass {
+    private int $enum; // json:enum Required
+
+    /**
+     * @param int $enum
+     */
+    public function __construct(int $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromEnum(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toEnum(): int {
+        if (EnumClass::validateEnum($this->enum))  {
+            return $this->enum; /*int*/
+        }
+        throw new Exception('never get to this EnumClass::enum');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEnum(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getEnum(): int {
+        if (EnumClass::validateEnum($this->enum))  {
+            return $this->enum;
+        }
+        throw new Exception('never get to getEnum EnumClass::enum');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleEnum(): int {
+        return 31; /*31:enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return EnumClass::validateEnum($this->enum);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'enum'} = $this->toEnum();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return EnumClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): EnumClass {
+        return new EnumClass(
+         EnumClass::fromEnum($obj->{'enum'})
+        );
+    }
+
+    /**
+     * @return EnumClass
+     */
+    public static function sample(): EnumClass {
+        return new EnumClass(
+         EnumClass::sampleEnum()
+        );
+    }
+}
+
+// This is an autogenerated file:EqualityContract
+
+class EqualityContract {
+    private int $equalityContract; // json:equalityContract Required
+
+    /**
+     * @param int $equalityContract
+     */
+    public function __construct(int $equalityContract) {
+        $this->equalityContract = $equalityContract;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromEqualityContract(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toEqualityContract(): int {
+        if (EqualityContract::validateEqualityContract($this->equalityContract))  {
+            return $this->equalityContract; /*int*/
+        }
+        throw new Exception('never get to this EqualityContract::equalityContract');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEqualityContract(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getEqualityContract(): int {
+        if (EqualityContract::validateEqualityContract($this->equalityContract))  {
+            return $this->equalityContract;
+        }
+        throw new Exception('never get to getEqualityContract EqualityContract::equalityContract');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleEqualityContract(): int {
+        return 31; /*31:equalityContract*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return EqualityContract::validateEqualityContract($this->equalityContract);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'equalityContract'} = $this->toEqualityContract();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return EqualityContract
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): EqualityContract {
+        return new EqualityContract(
+         EqualityContract::fromEqualityContract($obj->{'equalityContract'})
+        );
+    }
+
+    /**
+     * @return EqualityContract
+     */
+    public static function sample(): EqualityContract {
+        return new EqualityContract(
+         EqualityContract::sampleEqualityContract()
+        );
+    }
+}
+
+// This is an autogenerated file:Event
+
+class Event {
+    private int $event; // json:event Required
+
+    /**
+     * @param int $event
+     */
+    public function __construct(int $event) {
+        $this->event = $event;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromEvent(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toEvent(): int {
+        if (Event::validateEvent($this->event))  {
+            return $this->event; /*int*/
+        }
+        throw new Exception('never get to this Event::event');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateEvent(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getEvent(): int {
+        if (Event::validateEvent($this->event))  {
+            return $this->event;
+        }
+        throw new Exception('never get to getEvent Event::event');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleEvent(): int {
+        return 31; /*31:event*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Event::validateEvent($this->event);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'event'} = $this->toEvent();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Event
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Event {
+        return new Event(
+         Event::fromEvent($obj->{'event'})
+        );
+    }
+
+    /**
+     * @return Event
+     */
+    public static function sample(): Event {
+        return new Event(
+         Event::sampleEvent()
+        );
+    }
+}
+
+// This is an autogenerated file:Except
+
+class Except {
+    private int $except; // json:except Required
+
+    /**
+     * @param int $except
+     */
+    public function __construct(int $except) {
+        $this->except = $except;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExcept(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExcept(): int {
+        if (Except::validateExcept($this->except))  {
+            return $this->except; /*int*/
+        }
+        throw new Exception('never get to this Except::except');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExcept(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExcept(): int {
+        if (Except::validateExcept($this->except))  {
+            return $this->except;
+        }
+        throw new Exception('never get to getExcept Except::except');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExcept(): int {
+        return 31; /*31:except*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Except::validateExcept($this->except);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'except'} = $this->toExcept();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Except
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Except {
+        return new Except(
+         Except::fromExcept($obj->{'except'})
+        );
+    }
+
+    /**
+     * @return Except
+     */
+    public static function sample(): Except {
+        return new Except(
+         Except::sampleExcept()
+        );
+    }
+}
+
+// This is an autogenerated file:ExceptionClass
+
+class ExceptionClass {
+    private int $exception; // json:exception Required
+
+    /**
+     * @param int $exception
+     */
+    public function __construct(int $exception) {
+        $this->exception = $exception;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromException(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toException(): int {
+        if (ExceptionClass::validateException($this->exception))  {
+            return $this->exception; /*int*/
+        }
+        throw new Exception('never get to this ExceptionClass::exception');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateException(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getException(): int {
+        if (ExceptionClass::validateException($this->exception))  {
+            return $this->exception;
+        }
+        throw new Exception('never get to getException ExceptionClass::exception');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleException(): int {
+        return 31; /*31:exception*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ExceptionClass::validateException($this->exception);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'exception'} = $this->toException();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ExceptionClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ExceptionClass {
+        return new ExceptionClass(
+         ExceptionClass::fromException($obj->{'exception'})
+        );
+    }
+
+    /**
+     * @return ExceptionClass
+     */
+    public static function sample(): ExceptionClass {
+        return new ExceptionClass(
+         ExceptionClass::sampleException()
+        );
+    }
+}
+
+// This is an autogenerated file:Explicit
+
+class Explicit {
+    private int $explicit; // json:explicit Required
+
+    /**
+     * @param int $explicit
+     */
+    public function __construct(int $explicit) {
+        $this->explicit = $explicit;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExplicit(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExplicit(): int {
+        if (Explicit::validateExplicit($this->explicit))  {
+            return $this->explicit; /*int*/
+        }
+        throw new Exception('never get to this Explicit::explicit');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExplicit(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExplicit(): int {
+        if (Explicit::validateExplicit($this->explicit))  {
+            return $this->explicit;
+        }
+        throw new Exception('never get to getExplicit Explicit::explicit');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExplicit(): int {
+        return 31; /*31:explicit*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Explicit::validateExplicit($this->explicit);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'explicit'} = $this->toExplicit();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Explicit
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Explicit {
+        return new Explicit(
+         Explicit::fromExplicit($obj->{'explicit'})
+        );
+    }
+
+    /**
+     * @return Explicit
+     */
+    public static function sample(): Explicit {
+        return new Explicit(
+         Explicit::sampleExplicit()
+        );
+    }
+}
+
+// This is an autogenerated file:Export
+
+class Export {
+    private int $export; // json:export Required
+
+    /**
+     * @param int $export
+     */
+    public function __construct(int $export) {
+        $this->export = $export;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExport(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExport(): int {
+        if (Export::validateExport($this->export))  {
+            return $this->export; /*int*/
+        }
+        throw new Exception('never get to this Export::export');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExport(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExport(): int {
+        if (Export::validateExport($this->export))  {
+            return $this->export;
+        }
+        throw new Exception('never get to getExport Export::export');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExport(): int {
+        return 31; /*31:export*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Export::validateExport($this->export);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'export'} = $this->toExport();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Export
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Export {
+        return new Export(
+         Export::fromExport($obj->{'export'})
+        );
+    }
+
+    /**
+     * @return Export
+     */
+    public static function sample(): Export {
+        return new Export(
+         Export::sampleExport()
+        );
+    }
+}
+
+// This is an autogenerated file:Exposing
+
+class Exposing {
+    private int $exposing; // json:exposing Required
+
+    /**
+     * @param int $exposing
+     */
+    public function __construct(int $exposing) {
+        $this->exposing = $exposing;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExposing(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExposing(): int {
+        if (Exposing::validateExposing($this->exposing))  {
+            return $this->exposing; /*int*/
+        }
+        throw new Exception('never get to this Exposing::exposing');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExposing(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExposing(): int {
+        if (Exposing::validateExposing($this->exposing))  {
+            return $this->exposing;
+        }
+        throw new Exception('never get to getExposing Exposing::exposing');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExposing(): int {
+        return 31; /*31:exposing*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Exposing::validateExposing($this->exposing);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'exposing'} = $this->toExposing();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Exposing
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Exposing {
+        return new Exposing(
+         Exposing::fromExposing($obj->{'exposing'})
+        );
+    }
+
+    /**
+     * @return Exposing
+     */
+    public static function sample(): Exposing {
+        return new Exposing(
+         Exposing::sampleExposing()
+        );
+    }
+}
+
+// This is an autogenerated file:ExtendsClass
+
+class ExtendsClass {
+    private int $extends; // json:extends Required
+
+    /**
+     * @param int $extends
+     */
+    public function __construct(int $extends) {
+        $this->extends = $extends;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExtends(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExtends(): int {
+        if (ExtendsClass::validateExtends($this->extends))  {
+            return $this->extends; /*int*/
+        }
+        throw new Exception('never get to this ExtendsClass::extends');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExtends(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExtends(): int {
+        if (ExtendsClass::validateExtends($this->extends))  {
+            return $this->extends;
+        }
+        throw new Exception('never get to getExtends ExtendsClass::extends');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExtends(): int {
+        return 31; /*31:extends*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ExtendsClass::validateExtends($this->extends);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'extends'} = $this->toExtends();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ExtendsClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ExtendsClass {
+        return new ExtendsClass(
+         ExtendsClass::fromExtends($obj->{'extends'})
+        );
+    }
+
+    /**
+     * @return ExtendsClass
+     */
+    public static function sample(): ExtendsClass {
+        return new ExtendsClass(
+         ExtendsClass::sampleExtends()
+        );
+    }
+}
+
+// This is an autogenerated file:Extension
+
+class Extension {
+    private int $extension; // json:extension Required
+
+    /**
+     * @param int $extension
+     */
+    public function __construct(int $extension) {
+        $this->extension = $extension;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExtension(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExtension(): int {
+        if (Extension::validateExtension($this->extension))  {
+            return $this->extension; /*int*/
+        }
+        throw new Exception('never get to this Extension::extension');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExtension(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExtension(): int {
+        if (Extension::validateExtension($this->extension))  {
+            return $this->extension;
+        }
+        throw new Exception('never get to getExtension Extension::extension');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExtension(): int {
+        return 31; /*31:extension*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Extension::validateExtension($this->extension);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'extension'} = $this->toExtension();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Extension
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Extension {
+        return new Extension(
+         Extension::fromExtension($obj->{'extension'})
+        );
+    }
+
+    /**
+     * @return Extension
+     */
+    public static function sample(): Extension {
+        return new Extension(
+         Extension::sampleExtension()
+        );
+    }
+}
+
+// This is an autogenerated file:Extern
+
+class Extern {
+    private int $extern; // json:extern Required
+
+    /**
+     * @param int $extern
+     */
+    public function __construct(int $extern) {
+        $this->extern = $extern;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromExtern(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toExtern(): int {
+        if (Extern::validateExtern($this->extern))  {
+            return $this->extern; /*int*/
+        }
+        throw new Exception('never get to this Extern::extern');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateExtern(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getExtern(): int {
+        if (Extern::validateExtern($this->extern))  {
+            return $this->extern;
+        }
+        throw new Exception('never get to getExtern Extern::extern');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleExtern(): int {
+        return 31; /*31:extern*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Extern::validateExtern($this->extern);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'extern'} = $this->toExtern();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Extern
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Extern {
+        return new Extern(
+         Extern::fromExtern($obj->{'extern'})
+        );
+    }
+
+    /**
+     * @return Extern
+     */
+    public static function sample(): Extern {
+        return new Extern(
+         Extern::sampleExtern()
+        );
+    }
+}
+
+// This is an autogenerated file:Fallthrough
+
+class Fallthrough {
+    private int $fallthrough; // json:fallthrough Required
+
+    /**
+     * @param int $fallthrough
+     */
+    public function __construct(int $fallthrough) {
+        $this->fallthrough = $fallthrough;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFallthrough(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFallthrough(): int {
+        if (Fallthrough::validateFallthrough($this->fallthrough))  {
+            return $this->fallthrough; /*int*/
+        }
+        throw new Exception('never get to this Fallthrough::fallthrough');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFallthrough(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFallthrough(): int {
+        if (Fallthrough::validateFallthrough($this->fallthrough))  {
+            return $this->fallthrough;
+        }
+        throw new Exception('never get to getFallthrough Fallthrough::fallthrough');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFallthrough(): int {
+        return 31; /*31:fallthrough*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Fallthrough::validateFallthrough($this->fallthrough);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'fallthrough'} = $this->toFallthrough();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Fallthrough
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Fallthrough {
+        return new Fallthrough(
+         Fallthrough::fromFallthrough($obj->{'fallthrough'})
+        );
+    }
+
+    /**
+     * @return Fallthrough
+     */
+    public static function sample(): Fallthrough {
+        return new Fallthrough(
+         Fallthrough::sampleFallthrough()
+        );
+    }
+}
+
+// This is an autogenerated file:FalseClass
+
+class FalseClass {
+    private int $false; // json:False Required
+
+    /**
+     * @param int $false
+     */
+    public function __construct(int $false) {
+        $this->false = $false;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFalse(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFalse(): int {
+        if (FalseClass::validateFalse($this->false))  {
+            return $this->false; /*int*/
+        }
+        throw new Exception('never get to this FalseClass::false');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFalse(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFalse(): int {
+        if (FalseClass::validateFalse($this->false))  {
+            return $this->false;
+        }
+        throw new Exception('never get to getFalse FalseClass::false');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFalse(): int {
+        return 31; /*31:false*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return FalseClass::validateFalse($this->false);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'False'} = $this->toFalse();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return FalseClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): FalseClass {
+        return new FalseClass(
+         FalseClass::fromFalse($obj->{'False'})
+        );
+    }
+
+    /**
+     * @return FalseClass
+     */
+    public static function sample(): FalseClass {
+        return new FalseClass(
+         FalseClass::sampleFalse()
+        );
+    }
+}
+
+// This is an autogenerated file:Fileprivate
+
+class Fileprivate {
+    private int $fileprivate; // json:fileprivate Required
+
+    /**
+     * @param int $fileprivate
+     */
+    public function __construct(int $fileprivate) {
+        $this->fileprivate = $fileprivate;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFileprivate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFileprivate(): int {
+        if (Fileprivate::validateFileprivate($this->fileprivate))  {
+            return $this->fileprivate; /*int*/
+        }
+        throw new Exception('never get to this Fileprivate::fileprivate');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFileprivate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFileprivate(): int {
+        if (Fileprivate::validateFileprivate($this->fileprivate))  {
+            return $this->fileprivate;
+        }
+        throw new Exception('never get to getFileprivate Fileprivate::fileprivate');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFileprivate(): int {
+        return 31; /*31:fileprivate*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Fileprivate::validateFileprivate($this->fileprivate);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'fileprivate'} = $this->toFileprivate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Fileprivate
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Fileprivate {
+        return new Fileprivate(
+         Fileprivate::fromFileprivate($obj->{'fileprivate'})
+        );
+    }
+
+    /**
+     * @return Fileprivate
+     */
+    public static function sample(): Fileprivate {
+        return new Fileprivate(
+         Fileprivate::sampleFileprivate()
+        );
+    }
+}
+
+// This is an autogenerated file:FinalClass
+
+class FinalClass {
+    private int $final; // json:final Required
+
+    /**
+     * @param int $final
+     */
+    public function __construct(int $final) {
+        $this->final = $final;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFinal(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFinal(): int {
+        if (FinalClass::validateFinal($this->final))  {
+            return $this->final; /*int*/
+        }
+        throw new Exception('never get to this FinalClass::final');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFinal(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFinal(): int {
+        if (FinalClass::validateFinal($this->final))  {
+            return $this->final;
+        }
+        throw new Exception('never get to getFinal FinalClass::final');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFinal(): int {
+        return 31; /*31:final*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return FinalClass::validateFinal($this->final);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'final'} = $this->toFinal();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return FinalClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): FinalClass {
+        return new FinalClass(
+         FinalClass::fromFinal($obj->{'final'})
+        );
+    }
+
+    /**
+     * @return FinalClass
+     */
+    public static function sample(): FinalClass {
+        return new FinalClass(
+         FinalClass::sampleFinal()
+        );
+    }
+}
+
+// This is an autogenerated file:FinallyClass
+
+class FinallyClass {
+    private int $finally; // json:finally Required
+
+    /**
+     * @param int $finally
+     */
+    public function __construct(int $finally) {
+        $this->finally = $finally;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFinally(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFinally(): int {
+        if (FinallyClass::validateFinally($this->finally))  {
+            return $this->finally; /*int*/
+        }
+        throw new Exception('never get to this FinallyClass::finally');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFinally(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFinally(): int {
+        if (FinallyClass::validateFinally($this->finally))  {
+            return $this->finally;
+        }
+        throw new Exception('never get to getFinally FinallyClass::finally');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFinally(): int {
+        return 31; /*31:finally*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return FinallyClass::validateFinally($this->finally);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'finally'} = $this->toFinally();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return FinallyClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): FinallyClass {
+        return new FinallyClass(
+         FinallyClass::fromFinally($obj->{'finally'})
+        );
+    }
+
+    /**
+     * @return FinallyClass
+     */
+    public static function sample(): FinallyClass {
+        return new FinallyClass(
+         FinallyClass::sampleFinally()
+        );
+    }
+}
+
+// This is an autogenerated file:Fixed
+
+class Fixed {
+    private int $fixed; // json:fixed Required
+
+    /**
+     * @param int $fixed
+     */
+    public function __construct(int $fixed) {
+        $this->fixed = $fixed;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFixed(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFixed(): int {
+        if (Fixed::validateFixed($this->fixed))  {
+            return $this->fixed; /*int*/
+        }
+        throw new Exception('never get to this Fixed::fixed');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFixed(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFixed(): int {
+        if (Fixed::validateFixed($this->fixed))  {
+            return $this->fixed;
+        }
+        throw new Exception('never get to getFixed Fixed::fixed');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFixed(): int {
+        return 31; /*31:fixed*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Fixed::validateFixed($this->fixed);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'fixed'} = $this->toFixed();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Fixed
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Fixed {
+        return new Fixed(
+         Fixed::fromFixed($obj->{'fixed'})
+        );
+    }
+
+    /**
+     * @return Fixed
+     */
+    public static function sample(): Fixed {
+        return new Fixed(
+         Fixed::sampleFixed()
+        );
+    }
+}
+
+// This is an autogenerated file:FloatClass
+
+class FloatClass {
+    private int $float; // json:float Required
+
+    /**
+     * @param int $float
+     */
+    public function __construct(int $float) {
+        $this->float = $float;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFloat(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFloat(): int {
+        if (FloatClass::validateFloat($this->float))  {
+            return $this->float; /*int*/
+        }
+        throw new Exception('never get to this FloatClass::float');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFloat(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFloat(): int {
+        if (FloatClass::validateFloat($this->float))  {
+            return $this->float;
+        }
+        throw new Exception('never get to getFloat FloatClass::float');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFloat(): int {
+        return 31; /*31:float*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return FloatClass::validateFloat($this->float);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'float'} = $this->toFloat();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return FloatClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): FloatClass {
+        return new FloatClass(
+         FloatClass::fromFloat($obj->{'float'})
+        );
+    }
+
+    /**
+     * @return FloatClass
+     */
+    public static function sample(): FloatClass {
+        return new FloatClass(
+         FloatClass::sampleFloat()
+        );
+    }
+}
+
+// This is an autogenerated file:ForClass
+
+class ForClass {
+    private int $for; // json:for Required
+
+    /**
+     * @param int $for
+     */
+    public function __construct(int $for) {
+        $this->for = $for;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFor(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFor(): int {
+        if (ForClass::validateFor($this->for))  {
+            return $this->for; /*int*/
+        }
+        throw new Exception('never get to this ForClass::for');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFor(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFor(): int {
+        if (ForClass::validateFor($this->for))  {
+            return $this->for;
+        }
+        throw new Exception('never get to getFor ForClass::for');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFor(): int {
+        return 31; /*31:for*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ForClass::validateFor($this->for);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'for'} = $this->toFor();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ForClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ForClass {
+        return new ForClass(
+         ForClass::fromFor($obj->{'for'})
+        );
+    }
+
+    /**
+     * @return ForClass
+     */
+    public static function sample(): ForClass {
+        return new ForClass(
+         ForClass::sampleFor()
+        );
+    }
+}
+
+// This is an autogenerated file:ForeachClass
+
+class ForeachClass {
+    private int $foreach; // json:foreach Required
+
+    /**
+     * @param int $foreach
+     */
+    public function __construct(int $foreach) {
+        $this->foreach = $foreach;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromForeach(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toForeach(): int {
+        if (ForeachClass::validateForeach($this->foreach))  {
+            return $this->foreach; /*int*/
+        }
+        throw new Exception('never get to this ForeachClass::foreach');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateForeach(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getForeach(): int {
+        if (ForeachClass::validateForeach($this->foreach))  {
+            return $this->foreach;
+        }
+        throw new Exception('never get to getForeach ForeachClass::foreach');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleForeach(): int {
+        return 31; /*31:foreach*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ForeachClass::validateForeach($this->foreach);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'foreach'} = $this->toForeach();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ForeachClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ForeachClass {
+        return new ForeachClass(
+         ForeachClass::fromForeach($obj->{'foreach'})
+        );
+    }
+
+    /**
+     * @return ForeachClass
+     */
+    public static function sample(): ForeachClass {
+        return new ForeachClass(
+         ForeachClass::sampleForeach()
+        );
+    }
+}
+
+// This is an autogenerated file:Friend
+
+class Friend {
+    private int $friend; // json:friend Required
+
+    /**
+     * @param int $friend
+     */
+    public function __construct(int $friend) {
+        $this->friend = $friend;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFriend(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFriend(): int {
+        if (Friend::validateFriend($this->friend))  {
+            return $this->friend; /*int*/
+        }
+        throw new Exception('never get to this Friend::friend');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFriend(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFriend(): int {
+        if (Friend::validateFriend($this->friend))  {
+            return $this->friend;
+        }
+        throw new Exception('never get to getFriend Friend::friend');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFriend(): int {
+        return 31; /*31:friend*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Friend::validateFriend($this->friend);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'friend'} = $this->toFriend();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Friend
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Friend {
+        return new Friend(
+         Friend::fromFriend($obj->{'friend'})
+        );
+    }
+
+    /**
+     * @return Friend
+     */
+    public static function sample(): Friend {
+        return new Friend(
+         Friend::sampleFriend()
+        );
+    }
+}
+
+// This is an autogenerated file:From
+
+class From {
+    private int $from; // json:from Required
+
+    /**
+     * @param int $from
+     */
+    public function __construct(int $from) {
+        $this->from = $from;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFrom(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFrom(): int {
+        if (From::validateFrom($this->from))  {
+            return $this->from; /*int*/
+        }
+        throw new Exception('never get to this From::from');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFrom(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFrom(): int {
+        if (From::validateFrom($this->from))  {
+            return $this->from;
+        }
+        throw new Exception('never get to getFrom From::from');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFrom(): int {
+        return 31; /*31:from*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return From::validateFrom($this->from);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'from'} = $this->toFrom();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return From
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): From {
+        return new From(
+         From::fromFrom($obj->{'from'})
+        );
+    }
+
+    /**
+     * @return From
+     */
+    public static function sample(): From {
+        return new From(
+         From::sampleFrom()
+        );
+    }
+}
+
+// This is an autogenerated file:FromJSON
+
+class FromJSON {
+    private int $fromJSON; // json:from_json Required
+
+    /**
+     * @param int $fromJSON
+     */
+    public function __construct(int $fromJSON) {
+        $this->fromJSON = $fromJSON;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFromJSON(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFromJSON(): int {
+        if (FromJSON::validateFromJSON($this->fromJSON))  {
+            return $this->fromJSON; /*int*/
+        }
+        throw new Exception('never get to this FromJSON::fromJSON');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFromJSON(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFromJSON(): int {
+        if (FromJSON::validateFromJSON($this->fromJSON))  {
+            return $this->fromJSON;
+        }
+        throw new Exception('never get to getFromJSON FromJSON::fromJSON');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFromJSON(): int {
+        return 31; /*31:fromJSON*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return FromJSON::validateFromJSON($this->fromJSON);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'from_json'} = $this->toFromJSON();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return FromJSON
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): FromJSON {
+        return new FromJSON(
+         FromJSON::fromFromJSON($obj->{'from_json'})
+        );
+    }
+
+    /**
+     * @return FromJSON
+     */
+    public static function sample(): FromJSON {
+        return new FromJSON(
+         FromJSON::sampleFromJSON()
+        );
+    }
+}
+
+// This is an autogenerated file:Func
+
+class Func {
+    private int $func; // json:func Required
+
+    /**
+     * @param int $func
+     */
+    public function __construct(int $func) {
+        $this->func = $func;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFunc(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFunc(): int {
+        if (Func::validateFunc($this->func))  {
+            return $this->func; /*int*/
+        }
+        throw new Exception('never get to this Func::func');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFunc(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFunc(): int {
+        if (Func::validateFunc($this->func))  {
+            return $this->func;
+        }
+        throw new Exception('never get to getFunc Func::func');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFunc(): int {
+        return 31; /*31:func*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Func::validateFunc($this->func);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'func'} = $this->toFunc();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Func
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Func {
+        return new Func(
+         Func::fromFunc($obj->{'func'})
+        );
+    }
+
+    /**
+     * @return Func
+     */
+    public static function sample(): Func {
+        return new Func(
+         Func::sampleFunc()
+        );
+    }
+}
+
+// This is an autogenerated file:FunctionClass
+
+class FunctionClass {
+    private int $function; // json:function Required
+
+    /**
+     * @param int $function
+     */
+    public function __construct(int $function) {
+        $this->function = $function;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFunction(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFunction(): int {
+        if (FunctionClass::validateFunction($this->function))  {
+            return $this->function; /*int*/
+        }
+        throw new Exception('never get to this FunctionClass::function');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFunction(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFunction(): int {
+        if (FunctionClass::validateFunction($this->function))  {
+            return $this->function;
+        }
+        throw new Exception('never get to getFunction FunctionClass::function');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFunction(): int {
+        return 31; /*31:function*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return FunctionClass::validateFunction($this->function);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'function'} = $this->toFunction();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return FunctionClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): FunctionClass {
+        return new FunctionClass(
+         FunctionClass::fromFunction($obj->{'function'})
+        );
+    }
+
+    /**
+     * @return FunctionClass
+     */
+    public static function sample(): FunctionClass {
+        return new FunctionClass(
+         FunctionClass::sampleFunction()
+        );
+    }
+}
+
+// This is an autogenerated file:Get
+
+class Get {
+    private int $get; // json:get Required
+
+    /**
+     * @param int $get
+     */
+    public function __construct(int $get) {
+        $this->get = $get;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromGet(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toGet(): int {
+        if (Get::validateGet($this->get))  {
+            return $this->get; /*int*/
+        }
+        throw new Exception('never get to this Get::get');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGet(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getGet(): int {
+        if (Get::validateGet($this->get))  {
+            return $this->get;
+        }
+        throw new Exception('never get to getGet Get::get');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleGet(): int {
+        return 31; /*31:get*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Get::validateGet($this->get);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'get'} = $this->toGet();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Get
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Get {
+        return new Get(
+         Get::fromGet($obj->{'get'})
+        );
+    }
+
+    /**
+     * @return Get
+     */
+    public static function sample(): Get {
+        return new Get(
+         Get::sampleGet()
+        );
+    }
+}
+
+// This is an autogenerated file:GlobalClass
+
+class GlobalClass {
+    private int $global; // json:global Required
+
+    /**
+     * @param int $global
+     */
+    public function __construct(int $global) {
+        $this->global = $global;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromGlobal(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toGlobal(): int {
+        if (GlobalClass::validateGlobal($this->global))  {
+            return $this->global; /*int*/
+        }
+        throw new Exception('never get to this GlobalClass::global');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGlobal(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getGlobal(): int {
+        if (GlobalClass::validateGlobal($this->global))  {
+            return $this->global;
+        }
+        throw new Exception('never get to getGlobal GlobalClass::global');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleGlobal(): int {
+        return 31; /*31:global*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return GlobalClass::validateGlobal($this->global);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'global'} = $this->toGlobal();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return GlobalClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): GlobalClass {
+        return new GlobalClass(
+         GlobalClass::fromGlobal($obj->{'global'})
+        );
+    }
+
+    /**
+     * @return GlobalClass
+     */
+    public static function sample(): GlobalClass {
+        return new GlobalClass(
+         GlobalClass::sampleGlobal()
+        );
+    }
+}
+
+// This is an autogenerated file:Go
+
+class Go {
+    private int $go; // json:go Required
+
+    /**
+     * @param int $go
+     */
+    public function __construct(int $go) {
+        $this->go = $go;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromGo(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toGo(): int {
+        if (Go::validateGo($this->go))  {
+            return $this->go; /*int*/
+        }
+        throw new Exception('never get to this Go::go');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGo(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getGo(): int {
+        if (Go::validateGo($this->go))  {
+            return $this->go;
+        }
+        throw new Exception('never get to getGo Go::go');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleGo(): int {
+        return 31; /*31:go*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Go::validateGo($this->go);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'go'} = $this->toGo();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Go
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Go {
+        return new Go(
+         Go::fromGo($obj->{'go'})
+        );
+    }
+
+    /**
+     * @return Go
+     */
+    public static function sample(): Go {
+        return new Go(
+         Go::sampleGo()
+        );
+    }
+}
+
+// This is an autogenerated file:GotoClass
+
+class GotoClass {
+    private int $goto; // json:goto Required
+
+    /**
+     * @param int $goto
+     */
+    public function __construct(int $goto) {
+        $this->goto = $goto;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromGoto(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toGoto(): int {
+        if (GotoClass::validateGoto($this->goto))  {
+            return $this->goto; /*int*/
+        }
+        throw new Exception('never get to this GotoClass::goto');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGoto(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getGoto(): int {
+        if (GotoClass::validateGoto($this->goto))  {
+            return $this->goto;
+        }
+        throw new Exception('never get to getGoto GotoClass::goto');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleGoto(): int {
+        return 31; /*31:goto*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return GotoClass::validateGoto($this->goto);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'goto'} = $this->toGoto();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return GotoClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): GotoClass {
+        return new GotoClass(
+         GotoClass::fromGoto($obj->{'goto'})
+        );
+    }
+
+    /**
+     * @return GotoClass
+     */
+    public static function sample(): GotoClass {
+        return new GotoClass(
+         GotoClass::sampleGoto()
+        );
+    }
+}
+
+// This is an autogenerated file:Guard
+
+class Guard {
+    private int $guard; // json:guard Required
+
+    /**
+     * @param int $guard
+     */
+    public function __construct(int $guard) {
+        $this->guard = $guard;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromGuard(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toGuard(): int {
+        if (Guard::validateGuard($this->guard))  {
+            return $this->guard; /*int*/
+        }
+        throw new Exception('never get to this Guard::guard');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGuard(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getGuard(): int {
+        if (Guard::validateGuard($this->guard))  {
+            return $this->guard;
+        }
+        throw new Exception('never get to getGuard Guard::guard');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleGuard(): int {
+        return 31; /*31:guard*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Guard::validateGuard($this->guard);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'guard'} = $this->toGuard();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Guard
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Guard {
+        return new Guard(
+         Guard::fromGuard($obj->{'guard'})
+        );
+    }
+
+    /**
+     * @return Guard
+     */
+    public static function sample(): Guard {
+        return new Guard(
+         Guard::sampleGuard()
+        );
+    }
+}
+
+// This is an autogenerated file:HasOwnProperty
+
+class HasOwnProperty {
+    private int $hasOwnProperty; // json:hasOwnProperty Required
+
+    /**
+     * @param int $hasOwnProperty
+     */
+    public function __construct(int $hasOwnProperty) {
+        $this->hasOwnProperty = $hasOwnProperty;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromHasOwnProperty(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toHasOwnProperty(): int {
+        if (HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty))  {
+            return $this->hasOwnProperty; /*int*/
+        }
+        throw new Exception('never get to this HasOwnProperty::hasOwnProperty');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateHasOwnProperty(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getHasOwnProperty(): int {
+        if (HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty))  {
+            return $this->hasOwnProperty;
+        }
+        throw new Exception('never get to getHasOwnProperty HasOwnProperty::hasOwnProperty');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleHasOwnProperty(): int {
+        return 31; /*31:hasOwnProperty*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'hasOwnProperty'} = $this->toHasOwnProperty();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return HasOwnProperty
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): HasOwnProperty {
+        return new HasOwnProperty(
+         HasOwnProperty::fromHasOwnProperty($obj->{'hasOwnProperty'})
+        );
+    }
+
+    /**
+     * @return HasOwnProperty
+     */
+    public static function sample(): HasOwnProperty {
+        return new HasOwnProperty(
+         HasOwnProperty::sampleHasOwnProperty()
+        );
+    }
+}
+
+// This is an autogenerated file:ID
+
+class ID {
+    private int $id; // json:id Required
+
+    /**
+     * @param int $id
+     */
+    public function __construct(int $id) {
+        $this->id = $id;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromID(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toID(): int {
+        if (ID::validateID($this->id))  {
+            return $this->id; /*int*/
+        }
+        throw new Exception('never get to this ID::id');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateID(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getID(): int {
+        if (ID::validateID($this->id))  {
+            return $this->id;
+        }
+        throw new Exception('never get to getID ID::id');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleID(): int {
+        return 31; /*31:id*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ID::validateID($this->id);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'id'} = $this->toID();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ID
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ID {
+        return new ID(
+         ID::fromID($obj->{'id'})
+        );
+    }
+
+    /**
+     * @return ID
+     */
+    public static function sample(): ID {
+        return new ID(
+         ID::sampleID()
+        );
+    }
+}
+
+// This is an autogenerated file:IfClass
+
+class IfClass {
+    private int $if; // json:if Required
+
+    /**
+     * @param int $if
+     */
+    public function __construct(int $if) {
+        $this->if = $if;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromIf(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toIf(): int {
+        if (IfClass::validateIf($this->if))  {
+            return $this->if; /*int*/
+        }
+        throw new Exception('never get to this IfClass::if');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIf(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getIf(): int {
+        if (IfClass::validateIf($this->if))  {
+            return $this->if;
+        }
+        throw new Exception('never get to getIf IfClass::if');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleIf(): int {
+        return 31; /*31:if*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return IfClass::validateIf($this->if);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'if'} = $this->toIf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return IfClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): IfClass {
+        return new IfClass(
+         IfClass::fromIf($obj->{'if'})
+        );
+    }
+
+    /**
+     * @return IfClass
+     */
+    public static function sample(): IfClass {
+        return new IfClass(
+         IfClass::sampleIf()
+        );
+    }
+}
+
+// This is an autogenerated file:Imp
+
+class Imp {
+    private int $imp; // json:IMP Required
+
+    /**
+     * @param int $imp
+     */
+    public function __construct(int $imp) {
+        $this->imp = $imp;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromImp(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toImp(): int {
+        if (Imp::validateImp($this->imp))  {
+            return $this->imp; /*int*/
+        }
+        throw new Exception('never get to this Imp::imp');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImp(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getImp(): int {
+        if (Imp::validateImp($this->imp))  {
+            return $this->imp;
+        }
+        throw new Exception('never get to getImp Imp::imp');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleImp(): int {
+        return 31; /*31:imp*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Imp::validateImp($this->imp);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'IMP'} = $this->toImp();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Imp
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Imp {
+        return new Imp(
+         Imp::fromImp($obj->{'IMP'})
+        );
+    }
+
+    /**
+     * @return Imp
+     */
+    public static function sample(): Imp {
+        return new Imp(
+         Imp::sampleImp()
+        );
+    }
+}
+
+// This is an autogenerated file:ImplementsClass
+
+class ImplementsClass {
+    private int $implements; // json:implements Required
+
+    /**
+     * @param int $implements
+     */
+    public function __construct(int $implements) {
+        $this->implements = $implements;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromImplements(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toImplements(): int {
+        if (ImplementsClass::validateImplements($this->implements))  {
+            return $this->implements; /*int*/
+        }
+        throw new Exception('never get to this ImplementsClass::implements');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImplements(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getImplements(): int {
+        if (ImplementsClass::validateImplements($this->implements))  {
+            return $this->implements;
+        }
+        throw new Exception('never get to getImplements ImplementsClass::implements');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleImplements(): int {
+        return 31; /*31:implements*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ImplementsClass::validateImplements($this->implements);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'implements'} = $this->toImplements();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ImplementsClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ImplementsClass {
+        return new ImplementsClass(
+         ImplementsClass::fromImplements($obj->{'implements'})
+        );
+    }
+
+    /**
+     * @return ImplementsClass
+     */
+    public static function sample(): ImplementsClass {
+        return new ImplementsClass(
+         ImplementsClass::sampleImplements()
+        );
+    }
+}
+
+// This is an autogenerated file:Implicit
+
+class Implicit {
+    private int $implicit; // json:implicit Required
+
+    /**
+     * @param int $implicit
+     */
+    public function __construct(int $implicit) {
+        $this->implicit = $implicit;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromImplicit(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toImplicit(): int {
+        if (Implicit::validateImplicit($this->implicit))  {
+            return $this->implicit; /*int*/
+        }
+        throw new Exception('never get to this Implicit::implicit');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImplicit(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getImplicit(): int {
+        if (Implicit::validateImplicit($this->implicit))  {
+            return $this->implicit;
+        }
+        throw new Exception('never get to getImplicit Implicit::implicit');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleImplicit(): int {
+        return 31; /*31:implicit*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Implicit::validateImplicit($this->implicit);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'implicit'} = $this->toImplicit();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Implicit
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Implicit {
+        return new Implicit(
+         Implicit::fromImplicit($obj->{'implicit'})
+        );
+    }
+
+    /**
+     * @return Implicit
+     */
+    public static function sample(): Implicit {
+        return new Implicit(
+         Implicit::sampleImplicit()
+        );
+    }
+}
+
+// This is an autogenerated file:Import
+
+class Import {
+    private int $import; // json:import Required
+
+    /**
+     * @param int $import
+     */
+    public function __construct(int $import) {
+        $this->import = $import;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromImport(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toImport(): int {
+        if (Import::validateImport($this->import))  {
+            return $this->import; /*int*/
+        }
+        throw new Exception('never get to this Import::import');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateImport(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getImport(): int {
+        if (Import::validateImport($this->import))  {
+            return $this->import;
+        }
+        throw new Exception('never get to getImport Import::import');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleImport(): int {
+        return 31; /*31:import*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Import::validateImport($this->import);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'import'} = $this->toImport();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Import
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Import {
+        return new Import(
+         Import::fromImport($obj->{'import'})
+        );
+    }
+
+    /**
+     * @return Import
+     */
+    public static function sample(): Import {
+        return new Import(
+         Import::sampleImport()
+        );
+    }
+}
+
+// This is an autogenerated file:In
+
+class In {
+    private int $in; // json:in Required
+
+    /**
+     * @param int $in
+     */
+    public function __construct(int $in) {
+        $this->in = $in;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromIn(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toIn(): int {
+        if (In::validateIn($this->in))  {
+            return $this->in; /*int*/
+        }
+        throw new Exception('never get to this In::in');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIn(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getIn(): int {
+        if (In::validateIn($this->in))  {
+            return $this->in;
+        }
+        throw new Exception('never get to getIn In::in');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleIn(): int {
+        return 31; /*31:in*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return In::validateIn($this->in);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'in'} = $this->toIn();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return In
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): In {
+        return new In(
+         In::fromIn($obj->{'in'})
+        );
+    }
+
+    /**
+     * @return In
+     */
+    public static function sample(): In {
+        return new In(
+         In::sampleIn()
+        );
+    }
+}
+
+// This is an autogenerated file:Indirect
+
+class Indirect {
+    private int $indirect; // json:indirect Required
+
+    /**
+     * @param int $indirect
+     */
+    public function __construct(int $indirect) {
+        $this->indirect = $indirect;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromIndirect(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toIndirect(): int {
+        if (Indirect::validateIndirect($this->indirect))  {
+            return $this->indirect; /*int*/
+        }
+        throw new Exception('never get to this Indirect::indirect');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIndirect(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getIndirect(): int {
+        if (Indirect::validateIndirect($this->indirect))  {
+            return $this->indirect;
+        }
+        throw new Exception('never get to getIndirect Indirect::indirect');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleIndirect(): int {
+        return 31; /*31:indirect*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Indirect::validateIndirect($this->indirect);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'indirect'} = $this->toIndirect();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Indirect
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Indirect {
+        return new Indirect(
+         Indirect::fromIndirect($obj->{'indirect'})
+        );
+    }
+
+    /**
+     * @return Indirect
+     */
+    public static function sample(): Indirect {
+        return new Indirect(
+         Indirect::sampleIndirect()
+        );
+    }
+}
+
+// This is an autogenerated file:Infix
+
+class Infix {
+    private int $infix; // json:infix Required
+
+    /**
+     * @param int $infix
+     */
+    public function __construct(int $infix) {
+        $this->infix = $infix;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInfix(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInfix(): int {
+        if (Infix::validateInfix($this->infix))  {
+            return $this->infix; /*int*/
+        }
+        throw new Exception('never get to this Infix::infix');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInfix(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInfix(): int {
+        if (Infix::validateInfix($this->infix))  {
+            return $this->infix;
+        }
+        throw new Exception('never get to getInfix Infix::infix');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInfix(): int {
+        return 31; /*31:infix*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Infix::validateInfix($this->infix);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'infix'} = $this->toInfix();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Infix
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Infix {
+        return new Infix(
+         Infix::fromInfix($obj->{'infix'})
+        );
+    }
+
+    /**
+     * @return Infix
+     */
+    public static function sample(): Infix {
+        return new Infix(
+         Infix::sampleInfix()
+        );
+    }
+}
+
+// This is an autogenerated file:Init
+
+class Init {
+    private int $init; // json:init Required
+
+    /**
+     * @param int $init
+     */
+    public function __construct(int $init) {
+        $this->init = $init;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInit(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInit(): int {
+        if (Init::validateInit($this->init))  {
+            return $this->init; /*int*/
+        }
+        throw new Exception('never get to this Init::init');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInit(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInit(): int {
+        if (Init::validateInit($this->init))  {
+            return $this->init;
+        }
+        throw new Exception('never get to getInit Init::init');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInit(): int {
+        return 31; /*31:init*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Init::validateInit($this->init);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'init'} = $this->toInit();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Init
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Init {
+        return new Init(
+         Init::fromInit($obj->{'init'})
+        );
+    }
+
+    /**
+     * @return Init
+     */
+    public static function sample(): Init {
+        return new Init(
+         Init::sampleInit()
+        );
+    }
+}
+
+// This is an autogenerated file:Inline
+
+class Inline {
+    private int $inline; // json:inline Required
+
+    /**
+     * @param int $inline
+     */
+    public function __construct(int $inline) {
+        $this->inline = $inline;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInline(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInline(): int {
+        if (Inline::validateInline($this->inline))  {
+            return $this->inline; /*int*/
+        }
+        throw new Exception('never get to this Inline::inline');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInline(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInline(): int {
+        if (Inline::validateInline($this->inline))  {
+            return $this->inline;
+        }
+        throw new Exception('never get to getInline Inline::inline');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInline(): int {
+        return 31; /*31:inline*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Inline::validateInline($this->inline);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'inline'} = $this->toInline();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Inline
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Inline {
+        return new Inline(
+         Inline::fromInline($obj->{'inline'})
+        );
+    }
+
+    /**
+     * @return Inline
+     */
+    public static function sample(): Inline {
+        return new Inline(
+         Inline::sampleInline()
+        );
+    }
+}
+
+// This is an autogenerated file:Inout
+
+class Inout {
+    private int $inout; // json:inout Required
+
+    /**
+     * @param int $inout
+     */
+    public function __construct(int $inout) {
+        $this->inout = $inout;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInout(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInout(): int {
+        if (Inout::validateInout($this->inout))  {
+            return $this->inout; /*int*/
+        }
+        throw new Exception('never get to this Inout::inout');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInout(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInout(): int {
+        if (Inout::validateInout($this->inout))  {
+            return $this->inout;
+        }
+        throw new Exception('never get to getInout Inout::inout');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInout(): int {
+        return 31; /*31:inout*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Inout::validateInout($this->inout);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'inout'} = $this->toInout();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Inout
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Inout {
+        return new Inout(
+         Inout::fromInout($obj->{'inout'})
+        );
+    }
+
+    /**
+     * @return Inout
+     */
+    public static function sample(): Inout {
+        return new Inout(
+         Inout::sampleInout()
+        );
+    }
+}
+
+// This is an autogenerated file:InstanceofClass
+
+class InstanceofClass {
+    private int $instanceof; // json:instanceof Required
+
+    /**
+     * @param int $instanceof
+     */
+    public function __construct(int $instanceof) {
+        $this->instanceof = $instanceof;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInstanceof(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInstanceof(): int {
+        if (InstanceofClass::validateInstanceof($this->instanceof))  {
+            return $this->instanceof; /*int*/
+        }
+        throw new Exception('never get to this InstanceofClass::instanceof');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInstanceof(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInstanceof(): int {
+        if (InstanceofClass::validateInstanceof($this->instanceof))  {
+            return $this->instanceof;
+        }
+        throw new Exception('never get to getInstanceof InstanceofClass::instanceof');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInstanceof(): int {
+        return 31; /*31:instanceof*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return InstanceofClass::validateInstanceof($this->instanceof);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'instanceof'} = $this->toInstanceof();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return InstanceofClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): InstanceofClass {
+        return new InstanceofClass(
+         InstanceofClass::fromInstanceof($obj->{'instanceof'})
+        );
+    }
+
+    /**
+     * @return InstanceofClass
+     */
+    public static function sample(): InstanceofClass {
+        return new InstanceofClass(
+         InstanceofClass::sampleInstanceof()
+        );
+    }
+}
+
+// This is an autogenerated file:IntClass
+
+class IntClass {
+    private int $int; // json:int Required
+
+    /**
+     * @param int $int
+     */
+    public function __construct(int $int) {
+        $this->int = $int;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInt(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInt(): int {
+        if (IntClass::validateInt($this->int))  {
+            return $this->int; /*int*/
+        }
+        throw new Exception('never get to this IntClass::int');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInt(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInt(): int {
+        if (IntClass::validateInt($this->int))  {
+            return $this->int;
+        }
+        throw new Exception('never get to getInt IntClass::int');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInt(): int {
+        return 31; /*31:int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return IntClass::validateInt($this->int);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'int'} = $this->toInt();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return IntClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): IntClass {
+        return new IntClass(
+         IntClass::fromInt($obj->{'int'})
+        );
+    }
+
+    /**
+     * @return IntClass
+     */
+    public static function sample(): IntClass {
+        return new IntClass(
+         IntClass::sampleInt()
+        );
+    }
+}
+
+// This is an autogenerated file:InterfaceClass
+
+class InterfaceClass {
+    private int $interface; // json:interface Required
+
+    /**
+     * @param int $interface
+     */
+    public function __construct(int $interface) {
+        $this->interface = $interface;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInterface(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInterface(): int {
+        if (InterfaceClass::validateInterface($this->interface))  {
+            return $this->interface; /*int*/
+        }
+        throw new Exception('never get to this InterfaceClass::interface');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInterface(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInterface(): int {
+        if (InterfaceClass::validateInterface($this->interface))  {
+            return $this->interface;
+        }
+        throw new Exception('never get to getInterface InterfaceClass::interface');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInterface(): int {
+        return 31; /*31:interface*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return InterfaceClass::validateInterface($this->interface);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'interface'} = $this->toInterface();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return InterfaceClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): InterfaceClass {
+        return new InterfaceClass(
+         InterfaceClass::fromInterface($obj->{'interface'})
+        );
+    }
+
+    /**
+     * @return InterfaceClass
+     */
+    public static function sample(): InterfaceClass {
+        return new InterfaceClass(
+         InterfaceClass::sampleInterface()
+        );
+    }
+}
+
+// This is an autogenerated file:Internal
+
+class Internal {
+    private int $internal; // json:internal Required
+
+    /**
+     * @param int $internal
+     */
+    public function __construct(int $internal) {
+        $this->internal = $internal;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromInternal(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toInternal(): int {
+        if (Internal::validateInternal($this->internal))  {
+            return $this->internal; /*int*/
+        }
+        throw new Exception('never get to this Internal::internal');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateInternal(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getInternal(): int {
+        if (Internal::validateInternal($this->internal))  {
+            return $this->internal;
+        }
+        throw new Exception('never get to getInternal Internal::internal');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleInternal(): int {
+        return 31; /*31:internal*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Internal::validateInternal($this->internal);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'internal'} = $this->toInternal();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Internal
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Internal {
+        return new Internal(
+         Internal::fromInternal($obj->{'internal'})
+        );
+    }
+
+    /**
+     * @return Internal
+     */
+    public static function sample(): Internal {
+        return new Internal(
+         Internal::sampleInternal()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj2False
+
+class Obj2False {
+    private int $false; // json:false Required
+
+    /**
+     * @param int $false
+     */
+    public function __construct(int $false) {
+        $this->false = $false;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromFalse(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toFalse(): int {
+        if (Obj2False::validateFalse($this->false))  {
+            return $this->false; /*int*/
+        }
+        throw new Exception('never get to this Obj2False::false');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateFalse(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getFalse(): int {
+        if (Obj2False::validateFalse($this->false))  {
+            return $this->false;
+        }
+        throw new Exception('never get to getFalse Obj2False::false');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleFalse(): int {
+        return 31; /*31:false*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj2False::validateFalse($this->false);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'false'} = $this->toFalse();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj2False
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj2False {
+        return new Obj2False(
+         Obj2False::fromFalse($obj->{'false'})
+        );
+    }
+
+    /**
+     * @return Obj2False
+     */
+    public static function sample(): Obj2False {
+        return new Obj2False(
+         Obj2False::sampleFalse()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj3
+
+class Obj3 {
+    private int $dummy; // json:dummy Required
+    private Is $is; // json:is Required
+    private IterableClass $iterable; // json:iterable Required
+    private Jdec $jdec; // json:jdec Required
+    private Jenc $jenc; // json:jenc Required
+    private Jpipe $jpipe; // json:jpipe Required
+    private JSON $json; // json:json Required
+    private JSONConverter $jsonConverter; // json:json_converter Required
+    private JSONSerializer $jsonSerializer; // json:json_serializer Required
+    private JSONToken $jsonToken; // json:json_token Required
+    private JSONWriter $jsonWriter; // json:json_writer Required
+    private Lambda $lambda; // json:lambda Required
+    private Lazy $lazy; // json:lazy Required
+    private Left $left; // json:left Required
+    private Let $let; // json:let Required
+    private ListClass $list; // json:list Required
+    private Lock $lock; // json:lock Required
+    private Long $long; // json:long Required
+    private Map $map; // json:map Required
+    private MetadataPropertyHandling $metadataPropertyHandling; // json:metadata_property_handling Required
+    private Module $module; // json:module Required
+    private Mutable $mutable; // json:mutable Required
+    private Mutating $mutating; // json:mutating Required
+    private NamespaceClass $namespace; // json:namespace Required
+    private Native $native; // json:native Required
+    private NewClass $new; // json:new Required
+    private Newtonsoft $newtonsoft; // json:newtonsoft Required
+    private Nil $nil; // json:nil Required
+    private No $no; // json:NO Required
+    private Noexcept $noexcept; // json:noexcept Required
+    private Nonatomic $nonatomic; // json:nonatomic Required
+    private None $none; // json:None Required
+    private Nonlocal $nonlocal; // json:nonlocal Required
+    private Nonmutating $nonmutating; // json:nonmutating Required
+    private Not $not; // json:not Required
+    private NotEq $notEq; // json:not_eq Required
+    private NSString $nsString; // json:NSString Required
+    private NULLClass $null; // json:NULL Required
+    private Nullptr $nullptr; // json:nullptr Required
+    private Number $number; // json:number Required
+    private NoneClass $obj3None; // json:none Required
+    private Obj3Null $obj3Null; // json:null Required
+    private ProtocolClass $obj3Protocol; // json:protocol Required
+    private ObjectClass $object; // json:object Required
+    private Of $of; // json:of Required
+    private Oneway $oneway; // json:oneway Required
+    private Open $open; // json:open Required
+    private Operator $operator; // json:operator Required
+    private Optional $optional; // json:optional Required
+    private OrClass $or; // json:or Required
+    private OrEq $orEq; // json:or_eq Required
+    private Out $out; // json:out Required
+    private OverrideClass $override; // json:override Required
+    private Package $package; // json:package Required
+    private Params $params; // json:params Required
+    private Pass $pass; // json:pass Required
+    private Port $port; // json:port Required
+    private Postfix $postfix; // json:postfix Required
+    private Precedence $precedence; // json:precedence Required
+    private Prefix $prefix; // json:prefix Required
+    private PrintClass $print; // json:print Required
+    private PrintMembers $printMembers; // json:printMembers Required
+    private Printf $printf; // json:printf Required
+    private PrivateClass $private; // json:private Required
+    private ProtectedClass $protected; // json:protected Required
+    private Protocol $protocol; // json:Protocol Required
+
+    /**
+     * @param int $dummy
+     * @param Is $is
+     * @param IterableClass $iterable
+     * @param Jdec $jdec
+     * @param Jenc $jenc
+     * @param Jpipe $jpipe
+     * @param JSON $json
+     * @param JSONConverter $jsonConverter
+     * @param JSONSerializer $jsonSerializer
+     * @param JSONToken $jsonToken
+     * @param JSONWriter $jsonWriter
+     * @param Lambda $lambda
+     * @param Lazy $lazy
+     * @param Left $left
+     * @param Let $let
+     * @param ListClass $list
+     * @param Lock $lock
+     * @param Long $long
+     * @param Map $map
+     * @param MetadataPropertyHandling $metadataPropertyHandling
+     * @param Module $module
+     * @param Mutable $mutable
+     * @param Mutating $mutating
+     * @param NamespaceClass $namespace
+     * @param Native $native
+     * @param NewClass $new
+     * @param Newtonsoft $newtonsoft
+     * @param Nil $nil
+     * @param No $no
+     * @param Noexcept $noexcept
+     * @param Nonatomic $nonatomic
+     * @param None $none
+     * @param Nonlocal $nonlocal
+     * @param Nonmutating $nonmutating
+     * @param Not $not
+     * @param NotEq $notEq
+     * @param NSString $nsString
+     * @param NULLClass $null
+     * @param Nullptr $nullptr
+     * @param Number $number
+     * @param NoneClass $obj3None
+     * @param Obj3Null $obj3Null
+     * @param ProtocolClass $obj3Protocol
+     * @param ObjectClass $object
+     * @param Of $of
+     * @param Oneway $oneway
+     * @param Open $open
+     * @param Operator $operator
+     * @param Optional $optional
+     * @param OrClass $or
+     * @param OrEq $orEq
+     * @param Out $out
+     * @param OverrideClass $override
+     * @param Package $package
+     * @param Params $params
+     * @param Pass $pass
+     * @param Port $port
+     * @param Postfix $postfix
+     * @param Precedence $precedence
+     * @param Prefix $prefix
+     * @param PrintClass $print
+     * @param PrintMembers $printMembers
+     * @param Printf $printf
+     * @param PrivateClass $private
+     * @param ProtectedClass $protected
+     * @param Protocol $protocol
+     */
+    public function __construct(int $dummy, Is $is, IterableClass $iterable, Jdec $jdec, Jenc $jenc, Jpipe $jpipe, JSON $json, JSONConverter $jsonConverter, JSONSerializer $jsonSerializer, JSONToken $jsonToken, JSONWriter $jsonWriter, Lambda $lambda, Lazy $lazy, Left $left, Let $let, ListClass $list, Lock $lock, Long $long, Map $map, MetadataPropertyHandling $metadataPropertyHandling, Module $module, Mutable $mutable, Mutating $mutating, NamespaceClass $namespace, Native $native, NewClass $new, Newtonsoft $newtonsoft, Nil $nil, No $no, Noexcept $noexcept, Nonatomic $nonatomic, None $none, Nonlocal $nonlocal, Nonmutating $nonmutating, Not $not, NotEq $notEq, NSString $nsString, NULLClass $null, Nullptr $nullptr, Number $number, NoneClass $obj3None, Obj3Null $obj3Null, ProtocolClass $obj3Protocol, ObjectClass $object, 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) {
+        $this->dummy = $dummy;
+        $this->is = $is;
+        $this->iterable = $iterable;
+        $this->jdec = $jdec;
+        $this->jenc = $jenc;
+        $this->jpipe = $jpipe;
+        $this->json = $json;
+        $this->jsonConverter = $jsonConverter;
+        $this->jsonSerializer = $jsonSerializer;
+        $this->jsonToken = $jsonToken;
+        $this->jsonWriter = $jsonWriter;
+        $this->lambda = $lambda;
+        $this->lazy = $lazy;
+        $this->left = $left;
+        $this->let = $let;
+        $this->list = $list;
+        $this->lock = $lock;
+        $this->long = $long;
+        $this->map = $map;
+        $this->metadataPropertyHandling = $metadataPropertyHandling;
+        $this->module = $module;
+        $this->mutable = $mutable;
+        $this->mutating = $mutating;
+        $this->namespace = $namespace;
+        $this->native = $native;
+        $this->new = $new;
+        $this->newtonsoft = $newtonsoft;
+        $this->nil = $nil;
+        $this->no = $no;
+        $this->noexcept = $noexcept;
+        $this->nonatomic = $nonatomic;
+        $this->none = $none;
+        $this->nonlocal = $nonlocal;
+        $this->nonmutating = $nonmutating;
+        $this->not = $not;
+        $this->notEq = $notEq;
+        $this->nsString = $nsString;
+        $this->null = $null;
+        $this->nullptr = $nullptr;
+        $this->number = $number;
+        $this->obj3None = $obj3None;
+        $this->obj3Null = $obj3Null;
+        $this->obj3Protocol = $obj3Protocol;
+        $this->object = $object;
+        $this->of = $of;
+        $this->oneway = $oneway;
+        $this->open = $open;
+        $this->operator = $operator;
+        $this->optional = $optional;
+        $this->or = $or;
+        $this->orEq = $orEq;
+        $this->out = $out;
+        $this->override = $override;
+        $this->package = $package;
+        $this->params = $params;
+        $this->pass = $pass;
+        $this->port = $port;
+        $this->postfix = $postfix;
+        $this->precedence = $precedence;
+        $this->prefix = $prefix;
+        $this->print = $print;
+        $this->printMembers = $printMembers;
+        $this->printf = $printf;
+        $this->private = $private;
+        $this->protected = $protected;
+        $this->protocol = $protocol;
+    }
+
+    /**
+     * @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 (Obj3::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this Obj3::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 (Obj3::validateDummy($this->dummy))  {
+            return $this->dummy;
+        }
+        throw new Exception('never get to getDummy Obj3::dummy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Is
+     */
+    public static function fromIs(stdClass $value): Is {
+        return Is::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toIs(): stdClass {
+        if (Obj3::validateIs($this->is))  {
+            return $this->is->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::is');
+    }
+
+    /**
+     * @param Is
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIs(Is $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Is
+     */
+    public function getIs(): Is {
+        if (Obj3::validateIs($this->is))  {
+            return $this->is;
+        }
+        throw new Exception('never get to getIs Obj3::is');
+    }
+
+    /**
+     * @return Is
+     */
+    public static function sampleIs(): Is {
+        return Is::sample(); /*32:is*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return IterableClass
+     */
+    public static function fromIterable(stdClass $value): IterableClass {
+        return IterableClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toIterable(): stdClass {
+        if (Obj3::validateIterable($this->iterable))  {
+            return $this->iterable->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::iterable');
+    }
+
+    /**
+     * @param IterableClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIterable(IterableClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return IterableClass
+     */
+    public function getIterable(): IterableClass {
+        if (Obj3::validateIterable($this->iterable))  {
+            return $this->iterable;
+        }
+        throw new Exception('never get to getIterable Obj3::iterable');
+    }
+
+    /**
+     * @return IterableClass
+     */
+    public static function sampleIterable(): IterableClass {
+        return IterableClass::sample(); /*33:iterable*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Jdec
+     */
+    public static function fromJdec(stdClass $value): Jdec {
+        return Jdec::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJdec(): stdClass {
+        if (Obj3::validateJdec($this->jdec))  {
+            return $this->jdec->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jdec');
+    }
+
+    /**
+     * @param Jdec
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJdec(Jdec $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Jdec
+     */
+    public function getJdec(): Jdec {
+        if (Obj3::validateJdec($this->jdec))  {
+            return $this->jdec;
+        }
+        throw new Exception('never get to getJdec Obj3::jdec');
+    }
+
+    /**
+     * @return Jdec
+     */
+    public static function sampleJdec(): Jdec {
+        return Jdec::sample(); /*34:jdec*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Jenc
+     */
+    public static function fromJenc(stdClass $value): Jenc {
+        return Jenc::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJenc(): stdClass {
+        if (Obj3::validateJenc($this->jenc))  {
+            return $this->jenc->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jenc');
+    }
+
+    /**
+     * @param Jenc
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJenc(Jenc $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Jenc
+     */
+    public function getJenc(): Jenc {
+        if (Obj3::validateJenc($this->jenc))  {
+            return $this->jenc;
+        }
+        throw new Exception('never get to getJenc Obj3::jenc');
+    }
+
+    /**
+     * @return Jenc
+     */
+    public static function sampleJenc(): Jenc {
+        return Jenc::sample(); /*35:jenc*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Jpipe
+     */
+    public static function fromJpipe(stdClass $value): Jpipe {
+        return Jpipe::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJpipe(): stdClass {
+        if (Obj3::validateJpipe($this->jpipe))  {
+            return $this->jpipe->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jpipe');
+    }
+
+    /**
+     * @param Jpipe
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJpipe(Jpipe $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Jpipe
+     */
+    public function getJpipe(): Jpipe {
+        if (Obj3::validateJpipe($this->jpipe))  {
+            return $this->jpipe;
+        }
+        throw new Exception('never get to getJpipe Obj3::jpipe');
+    }
+
+    /**
+     * @return Jpipe
+     */
+    public static function sampleJpipe(): Jpipe {
+        return Jpipe::sample(); /*36:jpipe*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return JSON
+     */
+    public static function fromJSON(stdClass $value): JSON {
+        return JSON::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJSON(): stdClass {
+        if (Obj3::validateJSON($this->json))  {
+            return $this->json->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::json');
+    }
+
+    /**
+     * @param JSON
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSON(JSON $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return JSON
+     */
+    public function getJSON(): JSON {
+        if (Obj3::validateJSON($this->json))  {
+            return $this->json;
+        }
+        throw new Exception('never get to getJSON Obj3::json');
+    }
+
+    /**
+     * @return JSON
+     */
+    public static function sampleJSON(): JSON {
+        return JSON::sample(); /*37:json*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return JSONConverter
+     */
+    public static function fromJSONConverter(stdClass $value): JSONConverter {
+        return JSONConverter::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJSONConverter(): stdClass {
+        if (Obj3::validateJSONConverter($this->jsonConverter))  {
+            return $this->jsonConverter->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jsonConverter');
+    }
+
+    /**
+     * @param JSONConverter
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONConverter(JSONConverter $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return JSONConverter
+     */
+    public function getJSONConverter(): JSONConverter {
+        if (Obj3::validateJSONConverter($this->jsonConverter))  {
+            return $this->jsonConverter;
+        }
+        throw new Exception('never get to getJSONConverter Obj3::jsonConverter');
+    }
+
+    /**
+     * @return JSONConverter
+     */
+    public static function sampleJSONConverter(): JSONConverter {
+        return JSONConverter::sample(); /*38:jsonConverter*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return JSONSerializer
+     */
+    public static function fromJSONSerializer(stdClass $value): JSONSerializer {
+        return JSONSerializer::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJSONSerializer(): stdClass {
+        if (Obj3::validateJSONSerializer($this->jsonSerializer))  {
+            return $this->jsonSerializer->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jsonSerializer');
+    }
+
+    /**
+     * @param JSONSerializer
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONSerializer(JSONSerializer $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return JSONSerializer
+     */
+    public function getJSONSerializer(): JSONSerializer {
+        if (Obj3::validateJSONSerializer($this->jsonSerializer))  {
+            return $this->jsonSerializer;
+        }
+        throw new Exception('never get to getJSONSerializer Obj3::jsonSerializer');
+    }
+
+    /**
+     * @return JSONSerializer
+     */
+    public static function sampleJSONSerializer(): JSONSerializer {
+        return JSONSerializer::sample(); /*39:jsonSerializer*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return JSONToken
+     */
+    public static function fromJSONToken(stdClass $value): JSONToken {
+        return JSONToken::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJSONToken(): stdClass {
+        if (Obj3::validateJSONToken($this->jsonToken))  {
+            return $this->jsonToken->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jsonToken');
+    }
+
+    /**
+     * @param JSONToken
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONToken(JSONToken $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return JSONToken
+     */
+    public function getJSONToken(): JSONToken {
+        if (Obj3::validateJSONToken($this->jsonToken))  {
+            return $this->jsonToken;
+        }
+        throw new Exception('never get to getJSONToken Obj3::jsonToken');
+    }
+
+    /**
+     * @return JSONToken
+     */
+    public static function sampleJSONToken(): JSONToken {
+        return JSONToken::sample(); /*40:jsonToken*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return JSONWriter
+     */
+    public static function fromJSONWriter(stdClass $value): JSONWriter {
+        return JSONWriter::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toJSONWriter(): stdClass {
+        if (Obj3::validateJSONWriter($this->jsonWriter))  {
+            return $this->jsonWriter->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::jsonWriter');
+    }
+
+    /**
+     * @param JSONWriter
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONWriter(JSONWriter $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return JSONWriter
+     */
+    public function getJSONWriter(): JSONWriter {
+        if (Obj3::validateJSONWriter($this->jsonWriter))  {
+            return $this->jsonWriter;
+        }
+        throw new Exception('never get to getJSONWriter Obj3::jsonWriter');
+    }
+
+    /**
+     * @return JSONWriter
+     */
+    public static function sampleJSONWriter(): JSONWriter {
+        return JSONWriter::sample(); /*41:jsonWriter*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Lambda
+     */
+    public static function fromLambda(stdClass $value): Lambda {
+        return Lambda::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLambda(): stdClass {
+        if (Obj3::validateLambda($this->lambda))  {
+            return $this->lambda->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::lambda');
+    }
+
+    /**
+     * @param Lambda
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLambda(Lambda $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Lambda
+     */
+    public function getLambda(): Lambda {
+        if (Obj3::validateLambda($this->lambda))  {
+            return $this->lambda;
+        }
+        throw new Exception('never get to getLambda Obj3::lambda');
+    }
+
+    /**
+     * @return Lambda
+     */
+    public static function sampleLambda(): Lambda {
+        return Lambda::sample(); /*42:lambda*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Lazy
+     */
+    public static function fromLazy(stdClass $value): Lazy {
+        return Lazy::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLazy(): stdClass {
+        if (Obj3::validateLazy($this->lazy))  {
+            return $this->lazy->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::lazy');
+    }
+
+    /**
+     * @param Lazy
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLazy(Lazy $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Lazy
+     */
+    public function getLazy(): Lazy {
+        if (Obj3::validateLazy($this->lazy))  {
+            return $this->lazy;
+        }
+        throw new Exception('never get to getLazy Obj3::lazy');
+    }
+
+    /**
+     * @return Lazy
+     */
+    public static function sampleLazy(): Lazy {
+        return Lazy::sample(); /*43:lazy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Left
+     */
+    public static function fromLeft(stdClass $value): Left {
+        return Left::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLeft(): stdClass {
+        if (Obj3::validateLeft($this->left))  {
+            return $this->left->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::left');
+    }
+
+    /**
+     * @param Left
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLeft(Left $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Left
+     */
+    public function getLeft(): Left {
+        if (Obj3::validateLeft($this->left))  {
+            return $this->left;
+        }
+        throw new Exception('never get to getLeft Obj3::left');
+    }
+
+    /**
+     * @return Left
+     */
+    public static function sampleLeft(): Left {
+        return Left::sample(); /*44:left*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Let
+     */
+    public static function fromLet(stdClass $value): Let {
+        return Let::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLet(): stdClass {
+        if (Obj3::validateLet($this->let))  {
+            return $this->let->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::let');
+    }
+
+    /**
+     * @param Let
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLet(Let $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Let
+     */
+    public function getLet(): Let {
+        if (Obj3::validateLet($this->let))  {
+            return $this->let;
+        }
+        throw new Exception('never get to getLet Obj3::let');
+    }
+
+    /**
+     * @return Let
+     */
+    public static function sampleLet(): Let {
+        return Let::sample(); /*45:let*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ListClass
+     */
+    public static function fromList(stdClass $value): ListClass {
+        return ListClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toList(): stdClass {
+        if (Obj3::validateList($this->list))  {
+            return $this->list->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::list');
+    }
+
+    /**
+     * @param ListClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateList(ListClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ListClass
+     */
+    public function getList(): ListClass {
+        if (Obj3::validateList($this->list))  {
+            return $this->list;
+        }
+        throw new Exception('never get to getList Obj3::list');
+    }
+
+    /**
+     * @return ListClass
+     */
+    public static function sampleList(): ListClass {
+        return ListClass::sample(); /*46:list*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Lock
+     */
+    public static function fromLock(stdClass $value): Lock {
+        return Lock::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLock(): stdClass {
+        if (Obj3::validateLock($this->lock))  {
+            return $this->lock->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::lock');
+    }
+
+    /**
+     * @param Lock
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLock(Lock $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Lock
+     */
+    public function getLock(): Lock {
+        if (Obj3::validateLock($this->lock))  {
+            return $this->lock;
+        }
+        throw new Exception('never get to getLock Obj3::lock');
+    }
+
+    /**
+     * @return Lock
+     */
+    public static function sampleLock(): Lock {
+        return Lock::sample(); /*47:lock*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Long
+     */
+    public static function fromLong(stdClass $value): Long {
+        return Long::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLong(): stdClass {
+        if (Obj3::validateLong($this->long))  {
+            return $this->long->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::long');
+    }
+
+    /**
+     * @param Long
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLong(Long $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Long
+     */
+    public function getLong(): Long {
+        if (Obj3::validateLong($this->long))  {
+            return $this->long;
+        }
+        throw new Exception('never get to getLong Obj3::long');
+    }
+
+    /**
+     * @return Long
+     */
+    public static function sampleLong(): Long {
+        return Long::sample(); /*48:long*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Map
+     */
+    public static function fromMap(stdClass $value): Map {
+        return Map::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toMap(): stdClass {
+        if (Obj3::validateMap($this->map))  {
+            return $this->map->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::map');
+    }
+
+    /**
+     * @param Map
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMap(Map $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Map
+     */
+    public function getMap(): Map {
+        if (Obj3::validateMap($this->map))  {
+            return $this->map;
+        }
+        throw new Exception('never get to getMap Obj3::map');
+    }
+
+    /**
+     * @return Map
+     */
+    public static function sampleMap(): Map {
+        return Map::sample(); /*49:map*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return MetadataPropertyHandling
+     */
+    public static function fromMetadataPropertyHandling(stdClass $value): MetadataPropertyHandling {
+        return MetadataPropertyHandling::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toMetadataPropertyHandling(): stdClass {
+        if (Obj3::validateMetadataPropertyHandling($this->metadataPropertyHandling))  {
+            return $this->metadataPropertyHandling->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::metadataPropertyHandling');
+    }
+
+    /**
+     * @param MetadataPropertyHandling
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMetadataPropertyHandling(MetadataPropertyHandling $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return MetadataPropertyHandling
+     */
+    public function getMetadataPropertyHandling(): MetadataPropertyHandling {
+        if (Obj3::validateMetadataPropertyHandling($this->metadataPropertyHandling))  {
+            return $this->metadataPropertyHandling;
+        }
+        throw new Exception('never get to getMetadataPropertyHandling Obj3::metadataPropertyHandling');
+    }
+
+    /**
+     * @return MetadataPropertyHandling
+     */
+    public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling {
+        return MetadataPropertyHandling::sample(); /*50:metadataPropertyHandling*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Module
+     */
+    public static function fromModule(stdClass $value): Module {
+        return Module::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toModule(): stdClass {
+        if (Obj3::validateModule($this->module))  {
+            return $this->module->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::module');
+    }
+
+    /**
+     * @param Module
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateModule(Module $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Module
+     */
+    public function getModule(): Module {
+        if (Obj3::validateModule($this->module))  {
+            return $this->module;
+        }
+        throw new Exception('never get to getModule Obj3::module');
+    }
+
+    /**
+     * @return Module
+     */
+    public static function sampleModule(): Module {
+        return Module::sample(); /*51:module*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Mutable
+     */
+    public static function fromMutable(stdClass $value): Mutable {
+        return Mutable::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toMutable(): stdClass {
+        if (Obj3::validateMutable($this->mutable))  {
+            return $this->mutable->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::mutable');
+    }
+
+    /**
+     * @param Mutable
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMutable(Mutable $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Mutable
+     */
+    public function getMutable(): Mutable {
+        if (Obj3::validateMutable($this->mutable))  {
+            return $this->mutable;
+        }
+        throw new Exception('never get to getMutable Obj3::mutable');
+    }
+
+    /**
+     * @return Mutable
+     */
+    public static function sampleMutable(): Mutable {
+        return Mutable::sample(); /*52:mutable*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Mutating
+     */
+    public static function fromMutating(stdClass $value): Mutating {
+        return Mutating::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toMutating(): stdClass {
+        if (Obj3::validateMutating($this->mutating))  {
+            return $this->mutating->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::mutating');
+    }
+
+    /**
+     * @param Mutating
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMutating(Mutating $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Mutating
+     */
+    public function getMutating(): Mutating {
+        if (Obj3::validateMutating($this->mutating))  {
+            return $this->mutating;
+        }
+        throw new Exception('never get to getMutating Obj3::mutating');
+    }
+
+    /**
+     * @return Mutating
+     */
+    public static function sampleMutating(): Mutating {
+        return Mutating::sample(); /*53:mutating*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NamespaceClass
+     */
+    public static function fromNamespace(stdClass $value): NamespaceClass {
+        return NamespaceClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNamespace(): stdClass {
+        if (Obj3::validateNamespace($this->namespace))  {
+            return $this->namespace->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::namespace');
+    }
+
+    /**
+     * @param NamespaceClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNamespace(NamespaceClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NamespaceClass
+     */
+    public function getNamespace(): NamespaceClass {
+        if (Obj3::validateNamespace($this->namespace))  {
+            return $this->namespace;
+        }
+        throw new Exception('never get to getNamespace Obj3::namespace');
+    }
+
+    /**
+     * @return NamespaceClass
+     */
+    public static function sampleNamespace(): NamespaceClass {
+        return NamespaceClass::sample(); /*54:namespace*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Native
+     */
+    public static function fromNative(stdClass $value): Native {
+        return Native::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNative(): stdClass {
+        if (Obj3::validateNative($this->native))  {
+            return $this->native->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::native');
+    }
+
+    /**
+     * @param Native
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNative(Native $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Native
+     */
+    public function getNative(): Native {
+        if (Obj3::validateNative($this->native))  {
+            return $this->native;
+        }
+        throw new Exception('never get to getNative Obj3::native');
+    }
+
+    /**
+     * @return Native
+     */
+    public static function sampleNative(): Native {
+        return Native::sample(); /*55:native*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NewClass
+     */
+    public static function fromNew(stdClass $value): NewClass {
+        return NewClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNew(): stdClass {
+        if (Obj3::validateNew($this->new))  {
+            return $this->new->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::new');
+    }
+
+    /**
+     * @param NewClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNew(NewClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NewClass
+     */
+    public function getNew(): NewClass {
+        if (Obj3::validateNew($this->new))  {
+            return $this->new;
+        }
+        throw new Exception('never get to getNew Obj3::new');
+    }
+
+    /**
+     * @return NewClass
+     */
+    public static function sampleNew(): NewClass {
+        return NewClass::sample(); /*56:new*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Newtonsoft
+     */
+    public static function fromNewtonsoft(stdClass $value): Newtonsoft {
+        return Newtonsoft::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNewtonsoft(): stdClass {
+        if (Obj3::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::newtonsoft');
+    }
+
+    /**
+     * @param Newtonsoft
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNewtonsoft(Newtonsoft $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Newtonsoft
+     */
+    public function getNewtonsoft(): Newtonsoft {
+        if (Obj3::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft;
+        }
+        throw new Exception('never get to getNewtonsoft Obj3::newtonsoft');
+    }
+
+    /**
+     * @return Newtonsoft
+     */
+    public static function sampleNewtonsoft(): Newtonsoft {
+        return Newtonsoft::sample(); /*57: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(); /*58: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(); /*59:no*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Noexcept
+     */
+    public static function fromNoexcept(stdClass $value): Noexcept {
+        return Noexcept::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNoexcept(): stdClass {
+        if (Obj3::validateNoexcept($this->noexcept))  {
+            return $this->noexcept->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::noexcept');
+    }
+
+    /**
+     * @param Noexcept
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNoexcept(Noexcept $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Noexcept
+     */
+    public function getNoexcept(): Noexcept {
+        if (Obj3::validateNoexcept($this->noexcept))  {
+            return $this->noexcept;
+        }
+        throw new Exception('never get to getNoexcept Obj3::noexcept');
+    }
+
+    /**
+     * @return Noexcept
+     */
+    public static function sampleNoexcept(): Noexcept {
+        return Noexcept::sample(); /*60:noexcept*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Nonatomic
+     */
+    public static function fromNonatomic(stdClass $value): Nonatomic {
+        return Nonatomic::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNonatomic(): stdClass {
+        if (Obj3::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::nonatomic');
+    }
+
+    /**
+     * @param Nonatomic
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNonatomic(Nonatomic $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Nonatomic
+     */
+    public function getNonatomic(): Nonatomic {
+        if (Obj3::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic;
+        }
+        throw new Exception('never get to getNonatomic Obj3::nonatomic');
+    }
+
+    /**
+     * @return Nonatomic
+     */
+    public static function sampleNonatomic(): Nonatomic {
+        return Nonatomic::sample(); /*61:nonatomic*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return None
+     */
+    public static function fromNone(stdClass $value): None {
+        return None::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNone(): stdClass {
+        if (Obj3::validateNone($this->none))  {
+            return $this->none->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::none');
+    }
+
+    /**
+     * @param None
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNone(None $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return None
+     */
+    public function getNone(): None {
+        if (Obj3::validateNone($this->none))  {
+            return $this->none;
+        }
+        throw new Exception('never get to getNone Obj3::none');
+    }
+
+    /**
+     * @return None
+     */
+    public static function sampleNone(): None {
+        return None::sample(); /*62:none*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Nonlocal
+     */
+    public static function fromNonlocal(stdClass $value): Nonlocal {
+        return Nonlocal::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNonlocal(): stdClass {
+        if (Obj3::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::nonlocal');
+    }
+
+    /**
+     * @param Nonlocal
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNonlocal(Nonlocal $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Nonlocal
+     */
+    public function getNonlocal(): Nonlocal {
+        if (Obj3::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal;
+        }
+        throw new Exception('never get to getNonlocal Obj3::nonlocal');
+    }
+
+    /**
+     * @return Nonlocal
+     */
+    public static function sampleNonlocal(): Nonlocal {
+        return Nonlocal::sample(); /*63:nonlocal*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Nonmutating
+     */
+    public static function fromNonmutating(stdClass $value): Nonmutating {
+        return Nonmutating::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNonmutating(): stdClass {
+        if (Obj3::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::nonmutating');
+    }
+
+    /**
+     * @param Nonmutating
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNonmutating(Nonmutating $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Nonmutating
+     */
+    public function getNonmutating(): Nonmutating {
+        if (Obj3::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating;
+        }
+        throw new Exception('never get to getNonmutating Obj3::nonmutating');
+    }
+
+    /**
+     * @return Nonmutating
+     */
+    public static function sampleNonmutating(): Nonmutating {
+        return Nonmutating::sample(); /*64:nonmutating*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Not
+     */
+    public static function fromNot(stdClass $value): Not {
+        return Not::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNot(): stdClass {
+        if (Obj3::validateNot($this->not))  {
+            return $this->not->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::not');
+    }
+
+    /**
+     * @param Not
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNot(Not $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Not
+     */
+    public function getNot(): Not {
+        if (Obj3::validateNot($this->not))  {
+            return $this->not;
+        }
+        throw new Exception('never get to getNot Obj3::not');
+    }
+
+    /**
+     * @return Not
+     */
+    public static function sampleNot(): Not {
+        return Not::sample(); /*65:not*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NotEq
+     */
+    public static function fromNotEq(stdClass $value): NotEq {
+        return NotEq::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNotEq(): stdClass {
+        if (Obj3::validateNotEq($this->notEq))  {
+            return $this->notEq->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::notEq');
+    }
+
+    /**
+     * @param NotEq
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNotEq(NotEq $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NotEq
+     */
+    public function getNotEq(): NotEq {
+        if (Obj3::validateNotEq($this->notEq))  {
+            return $this->notEq;
+        }
+        throw new Exception('never get to getNotEq Obj3::notEq');
+    }
+
+    /**
+     * @return NotEq
+     */
+    public static function sampleNotEq(): NotEq {
+        return NotEq::sample(); /*66:notEq*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NSString
+     */
+    public static function fromNSString(stdClass $value): NSString {
+        return NSString::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNSString(): stdClass {
+        if (Obj3::validateNSString($this->nsString))  {
+            return $this->nsString->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::nsString');
+    }
+
+    /**
+     * @param NSString
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNSString(NSString $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NSString
+     */
+    public function getNSString(): NSString {
+        if (Obj3::validateNSString($this->nsString))  {
+            return $this->nsString;
+        }
+        throw new Exception('never get to getNSString Obj3::nsString');
+    }
+
+    /**
+     * @return NSString
+     */
+    public static function sampleNSString(): NSString {
+        return NSString::sample(); /*67:nsString*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NULLClass
+     */
+    public static function fromNull(stdClass $value): NULLClass {
+        return NULLClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNull(): stdClass {
+        if (Obj3::validateNull($this->null))  {
+            return $this->null->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::null');
+    }
+
+    /**
+     * @param NULLClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNull(NULLClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NULLClass
+     */
+    public function getNull(): NULLClass {
+        if (Obj3::validateNull($this->null))  {
+            return $this->null;
+        }
+        throw new Exception('never get to getNull Obj3::null');
+    }
+
+    /**
+     * @return NULLClass
+     */
+    public static function sampleNull(): NULLClass {
+        return NULLClass::sample(); /*68:null*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Nullptr
+     */
+    public static function fromNullptr(stdClass $value): Nullptr {
+        return Nullptr::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNullptr(): stdClass {
+        if (Obj3::validateNullptr($this->nullptr))  {
+            return $this->nullptr->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::nullptr');
+    }
+
+    /**
+     * @param Nullptr
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNullptr(Nullptr $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Nullptr
+     */
+    public function getNullptr(): Nullptr {
+        if (Obj3::validateNullptr($this->nullptr))  {
+            return $this->nullptr;
+        }
+        throw new Exception('never get to getNullptr Obj3::nullptr');
+    }
+
+    /**
+     * @return Nullptr
+     */
+    public static function sampleNullptr(): Nullptr {
+        return Nullptr::sample(); /*69:nullptr*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Number
+     */
+    public static function fromNumber(stdClass $value): Number {
+        return Number::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNumber(): stdClass {
+        if (Obj3::validateNumber($this->number))  {
+            return $this->number->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::number');
+    }
+
+    /**
+     * @param Number
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNumber(Number $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Number
+     */
+    public function getNumber(): Number {
+        if (Obj3::validateNumber($this->number))  {
+            return $this->number;
+        }
+        throw new Exception('never get to getNumber Obj3::number');
+    }
+
+    /**
+     * @return Number
+     */
+    public static function sampleNumber(): Number {
+        return Number::sample(); /*70:number*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NoneClass
+     */
+    public static function fromObj3None(stdClass $value): NoneClass {
+        return NoneClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj3None(): stdClass {
+        if (Obj3::validateObj3None($this->obj3None))  {
+            return $this->obj3None->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::obj3None');
+    }
+
+    /**
+     * @param NoneClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj3None(NoneClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NoneClass
+     */
+    public function getObj3None(): NoneClass {
+        if (Obj3::validateObj3None($this->obj3None))  {
+            return $this->obj3None;
+        }
+        throw new Exception('never get to getObj3None Obj3::obj3None');
+    }
+
+    /**
+     * @return NoneClass
+     */
+    public static function sampleObj3None(): NoneClass {
+        return NoneClass::sample(); /*71:obj3None*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj3Null
+     */
+    public static function fromObj3Null(stdClass $value): Obj3Null {
+        return Obj3Null::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj3Null(): stdClass {
+        if (Obj3::validateObj3Null($this->obj3Null))  {
+            return $this->obj3Null->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::obj3Null');
+    }
+
+    /**
+     * @param Obj3Null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj3Null(Obj3Null $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj3Null
+     */
+    public function getObj3Null(): Obj3Null {
+        if (Obj3::validateObj3Null($this->obj3Null))  {
+            return $this->obj3Null;
+        }
+        throw new Exception('never get to getObj3Null Obj3::obj3Null');
+    }
+
+    /**
+     * @return Obj3Null
+     */
+    public static function sampleObj3Null(): Obj3Null {
+        return Obj3Null::sample(); /*72:obj3Null*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ProtocolClass
+     */
+    public static function fromObj3Protocol(stdClass $value): ProtocolClass {
+        return ProtocolClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj3Protocol(): stdClass {
+        if (Obj3::validateObj3Protocol($this->obj3Protocol))  {
+            return $this->obj3Protocol->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::obj3Protocol');
+    }
+
+    /**
+     * @param ProtocolClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj3Protocol(ProtocolClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ProtocolClass
+     */
+    public function getObj3Protocol(): ProtocolClass {
+        if (Obj3::validateObj3Protocol($this->obj3Protocol))  {
+            return $this->obj3Protocol;
+        }
+        throw new Exception('never get to getObj3Protocol Obj3::obj3Protocol');
+    }
+
+    /**
+     * @return ProtocolClass
+     */
+    public static function sampleObj3Protocol(): ProtocolClass {
+        return ProtocolClass::sample(); /*73:obj3Protocol*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ObjectClass
+     */
+    public static function fromObject(stdClass $value): ObjectClass {
+        return ObjectClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObject(): stdClass {
+        if (Obj3::validateObject($this->object))  {
+            return $this->object->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::object');
+    }
+
+    /**
+     * @param ObjectClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObject(ObjectClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ObjectClass
+     */
+    public function getObject(): ObjectClass {
+        if (Obj3::validateObject($this->object))  {
+            return $this->object;
+        }
+        throw new Exception('never get to getObject Obj3::object');
+    }
+
+    /**
+     * @return ObjectClass
+     */
+    public static function sampleObject(): ObjectClass {
+        return ObjectClass::sample(); /*74:object*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Of
+     */
+    public static function fromOf(stdClass $value): Of {
+        return Of::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOf(): stdClass {
+        if (Obj3::validateOf($this->of))  {
+            return $this->of->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::of');
+    }
+
+    /**
+     * @param Of
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOf(Of $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Of
+     */
+    public function getOf(): Of {
+        if (Obj3::validateOf($this->of))  {
+            return $this->of;
+        }
+        throw new Exception('never get to getOf Obj3::of');
+    }
+
+    /**
+     * @return Of
+     */
+    public static function sampleOf(): Of {
+        return Of::sample(); /*75:of*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Oneway
+     */
+    public static function fromOneway(stdClass $value): Oneway {
+        return Oneway::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOneway(): stdClass {
+        if (Obj3::validateOneway($this->oneway))  {
+            return $this->oneway->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::oneway');
+    }
+
+    /**
+     * @param Oneway
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOneway(Oneway $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Oneway
+     */
+    public function getOneway(): Oneway {
+        if (Obj3::validateOneway($this->oneway))  {
+            return $this->oneway;
+        }
+        throw new Exception('never get to getOneway Obj3::oneway');
+    }
+
+    /**
+     * @return Oneway
+     */
+    public static function sampleOneway(): Oneway {
+        return Oneway::sample(); /*76:oneway*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Open
+     */
+    public static function fromOpen(stdClass $value): Open {
+        return Open::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOpen(): stdClass {
+        if (Obj3::validateOpen($this->open))  {
+            return $this->open->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::open');
+    }
+
+    /**
+     * @param Open
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOpen(Open $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Open
+     */
+    public function getOpen(): Open {
+        if (Obj3::validateOpen($this->open))  {
+            return $this->open;
+        }
+        throw new Exception('never get to getOpen Obj3::open');
+    }
+
+    /**
+     * @return Open
+     */
+    public static function sampleOpen(): Open {
+        return Open::sample(); /*77:open*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Operator
+     */
+    public static function fromOperator(stdClass $value): Operator {
+        return Operator::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOperator(): stdClass {
+        if (Obj3::validateOperator($this->operator))  {
+            return $this->operator->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::operator');
+    }
+
+    /**
+     * @param Operator
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOperator(Operator $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Operator
+     */
+    public function getOperator(): Operator {
+        if (Obj3::validateOperator($this->operator))  {
+            return $this->operator;
+        }
+        throw new Exception('never get to getOperator Obj3::operator');
+    }
+
+    /**
+     * @return Operator
+     */
+    public static function sampleOperator(): Operator {
+        return Operator::sample(); /*78:operator*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Optional
+     */
+    public static function fromOptional(stdClass $value): Optional {
+        return Optional::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOptional(): stdClass {
+        if (Obj3::validateOptional($this->optional))  {
+            return $this->optional->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::optional');
+    }
+
+    /**
+     * @param Optional
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOptional(Optional $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Optional
+     */
+    public function getOptional(): Optional {
+        if (Obj3::validateOptional($this->optional))  {
+            return $this->optional;
+        }
+        throw new Exception('never get to getOptional Obj3::optional');
+    }
+
+    /**
+     * @return Optional
+     */
+    public static function sampleOptional(): Optional {
+        return Optional::sample(); /*79:optional*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return OrClass
+     */
+    public static function fromOr(stdClass $value): OrClass {
+        return OrClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOr(): stdClass {
+        if (Obj3::validateOr($this->or))  {
+            return $this->or->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::or');
+    }
+
+    /**
+     * @param OrClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOr(OrClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OrClass
+     */
+    public function getOr(): OrClass {
+        if (Obj3::validateOr($this->or))  {
+            return $this->or;
+        }
+        throw new Exception('never get to getOr Obj3::or');
+    }
+
+    /**
+     * @return OrClass
+     */
+    public static function sampleOr(): OrClass {
+        return OrClass::sample(); /*80:or*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return OrEq
+     */
+    public static function fromOrEq(stdClass $value): OrEq {
+        return OrEq::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOrEq(): stdClass {
+        if (Obj3::validateOrEq($this->orEq))  {
+            return $this->orEq->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::orEq');
+    }
+
+    /**
+     * @param OrEq
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOrEq(OrEq $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OrEq
+     */
+    public function getOrEq(): OrEq {
+        if (Obj3::validateOrEq($this->orEq))  {
+            return $this->orEq;
+        }
+        throw new Exception('never get to getOrEq Obj3::orEq');
+    }
+
+    /**
+     * @return OrEq
+     */
+    public static function sampleOrEq(): OrEq {
+        return OrEq::sample(); /*81:orEq*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Out
+     */
+    public static function fromOut(stdClass $value): Out {
+        return Out::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOut(): stdClass {
+        if (Obj3::validateOut($this->out))  {
+            return $this->out->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::out');
+    }
+
+    /**
+     * @param Out
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOut(Out $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Out
+     */
+    public function getOut(): Out {
+        if (Obj3::validateOut($this->out))  {
+            return $this->out;
+        }
+        throw new Exception('never get to getOut Obj3::out');
+    }
+
+    /**
+     * @return Out
+     */
+    public static function sampleOut(): Out {
+        return Out::sample(); /*82:out*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return OverrideClass
+     */
+    public static function fromOverride(stdClass $value): OverrideClass {
+        return OverrideClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOverride(): stdClass {
+        if (Obj3::validateOverride($this->override))  {
+            return $this->override->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::override');
+    }
+
+    /**
+     * @param OverrideClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOverride(OverrideClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OverrideClass
+     */
+    public function getOverride(): OverrideClass {
+        if (Obj3::validateOverride($this->override))  {
+            return $this->override;
+        }
+        throw new Exception('never get to getOverride Obj3::override');
+    }
+
+    /**
+     * @return OverrideClass
+     */
+    public static function sampleOverride(): OverrideClass {
+        return OverrideClass::sample(); /*83:override*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Package
+     */
+    public static function fromPackage(stdClass $value): Package {
+        return Package::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPackage(): stdClass {
+        if (Obj3::validatePackage($this->package))  {
+            return $this->package->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::package');
+    }
+
+    /**
+     * @param Package
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePackage(Package $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Package
+     */
+    public function getPackage(): Package {
+        if (Obj3::validatePackage($this->package))  {
+            return $this->package;
+        }
+        throw new Exception('never get to getPackage Obj3::package');
+    }
+
+    /**
+     * @return Package
+     */
+    public static function samplePackage(): Package {
+        return Package::sample(); /*84:package*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Params
+     */
+    public static function fromParams(stdClass $value): Params {
+        return Params::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toParams(): stdClass {
+        if (Obj3::validateParams($this->params))  {
+            return $this->params->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::params');
+    }
+
+    /**
+     * @param Params
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateParams(Params $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Params
+     */
+    public function getParams(): Params {
+        if (Obj3::validateParams($this->params))  {
+            return $this->params;
+        }
+        throw new Exception('never get to getParams Obj3::params');
+    }
+
+    /**
+     * @return Params
+     */
+    public static function sampleParams(): Params {
+        return Params::sample(); /*85:params*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Pass
+     */
+    public static function fromPass(stdClass $value): Pass {
+        return Pass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPass(): stdClass {
+        if (Obj3::validatePass($this->pass))  {
+            return $this->pass->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::pass');
+    }
+
+    /**
+     * @param Pass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePass(Pass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Pass
+     */
+    public function getPass(): Pass {
+        if (Obj3::validatePass($this->pass))  {
+            return $this->pass;
+        }
+        throw new Exception('never get to getPass Obj3::pass');
+    }
+
+    /**
+     * @return Pass
+     */
+    public static function samplePass(): Pass {
+        return Pass::sample(); /*86:pass*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Port
+     */
+    public static function fromPort(stdClass $value): Port {
+        return Port::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPort(): stdClass {
+        if (Obj3::validatePort($this->port))  {
+            return $this->port->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::port');
+    }
+
+    /**
+     * @param Port
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePort(Port $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Port
+     */
+    public function getPort(): Port {
+        if (Obj3::validatePort($this->port))  {
+            return $this->port;
+        }
+        throw new Exception('never get to getPort Obj3::port');
+    }
+
+    /**
+     * @return Port
+     */
+    public static function samplePort(): Port {
+        return Port::sample(); /*87:port*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Postfix
+     */
+    public static function fromPostfix(stdClass $value): Postfix {
+        return Postfix::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPostfix(): stdClass {
+        if (Obj3::validatePostfix($this->postfix))  {
+            return $this->postfix->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::postfix');
+    }
+
+    /**
+     * @param Postfix
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePostfix(Postfix $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Postfix
+     */
+    public function getPostfix(): Postfix {
+        if (Obj3::validatePostfix($this->postfix))  {
+            return $this->postfix;
+        }
+        throw new Exception('never get to getPostfix Obj3::postfix');
+    }
+
+    /**
+     * @return Postfix
+     */
+    public static function samplePostfix(): Postfix {
+        return Postfix::sample(); /*88:postfix*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Precedence
+     */
+    public static function fromPrecedence(stdClass $value): Precedence {
+        return Precedence::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrecedence(): stdClass {
+        if (Obj3::validatePrecedence($this->precedence))  {
+            return $this->precedence->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::precedence');
+    }
+
+    /**
+     * @param Precedence
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrecedence(Precedence $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Precedence
+     */
+    public function getPrecedence(): Precedence {
+        if (Obj3::validatePrecedence($this->precedence))  {
+            return $this->precedence;
+        }
+        throw new Exception('never get to getPrecedence Obj3::precedence');
+    }
+
+    /**
+     * @return Precedence
+     */
+    public static function samplePrecedence(): Precedence {
+        return Precedence::sample(); /*89:precedence*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Prefix
+     */
+    public static function fromPrefix(stdClass $value): Prefix {
+        return Prefix::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrefix(): stdClass {
+        if (Obj3::validatePrefix($this->prefix))  {
+            return $this->prefix->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::prefix');
+    }
+
+    /**
+     * @param Prefix
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrefix(Prefix $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Prefix
+     */
+    public function getPrefix(): Prefix {
+        if (Obj3::validatePrefix($this->prefix))  {
+            return $this->prefix;
+        }
+        throw new Exception('never get to getPrefix Obj3::prefix');
+    }
+
+    /**
+     * @return Prefix
+     */
+    public static function samplePrefix(): Prefix {
+        return Prefix::sample(); /*90:prefix*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return PrintClass
+     */
+    public static function fromPrint(stdClass $value): PrintClass {
+        return PrintClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrint(): stdClass {
+        if (Obj3::validatePrint($this->print))  {
+            return $this->print->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::print');
+    }
+
+    /**
+     * @param PrintClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrint(PrintClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return PrintClass
+     */
+    public function getPrint(): PrintClass {
+        if (Obj3::validatePrint($this->print))  {
+            return $this->print;
+        }
+        throw new Exception('never get to getPrint Obj3::print');
+    }
+
+    /**
+     * @return PrintClass
+     */
+    public static function samplePrint(): PrintClass {
+        return PrintClass::sample(); /*91:print*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return PrintMembers
+     */
+    public static function fromPrintMembers(stdClass $value): PrintMembers {
+        return PrintMembers::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrintMembers(): stdClass {
+        if (Obj3::validatePrintMembers($this->printMembers))  {
+            return $this->printMembers->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::printMembers');
+    }
+
+    /**
+     * @param PrintMembers
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrintMembers(PrintMembers $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return PrintMembers
+     */
+    public function getPrintMembers(): PrintMembers {
+        if (Obj3::validatePrintMembers($this->printMembers))  {
+            return $this->printMembers;
+        }
+        throw new Exception('never get to getPrintMembers Obj3::printMembers');
+    }
+
+    /**
+     * @return PrintMembers
+     */
+    public static function samplePrintMembers(): PrintMembers {
+        return PrintMembers::sample(); /*92:printMembers*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Printf
+     */
+    public static function fromPrintf(stdClass $value): Printf {
+        return Printf::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrintf(): stdClass {
+        if (Obj3::validatePrintf($this->printf))  {
+            return $this->printf->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::printf');
+    }
+
+    /**
+     * @param Printf
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrintf(Printf $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Printf
+     */
+    public function getPrintf(): Printf {
+        if (Obj3::validatePrintf($this->printf))  {
+            return $this->printf;
+        }
+        throw new Exception('never get to getPrintf Obj3::printf');
+    }
+
+    /**
+     * @return Printf
+     */
+    public static function samplePrintf(): Printf {
+        return Printf::sample(); /*93:printf*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return PrivateClass
+     */
+    public static function fromPrivate(stdClass $value): PrivateClass {
+        return PrivateClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrivate(): stdClass {
+        if (Obj3::validatePrivate($this->private))  {
+            return $this->private->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::private');
+    }
+
+    /**
+     * @param PrivateClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrivate(PrivateClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return PrivateClass
+     */
+    public function getPrivate(): PrivateClass {
+        if (Obj3::validatePrivate($this->private))  {
+            return $this->private;
+        }
+        throw new Exception('never get to getPrivate Obj3::private');
+    }
+
+    /**
+     * @return PrivateClass
+     */
+    public static function samplePrivate(): PrivateClass {
+        return PrivateClass::sample(); /*94:private*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ProtectedClass
+     */
+    public static function fromProtected(stdClass $value): ProtectedClass {
+        return ProtectedClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toProtected(): stdClass {
+        if (Obj3::validateProtected($this->protected))  {
+            return $this->protected->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::protected');
+    }
+
+    /**
+     * @param ProtectedClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateProtected(ProtectedClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ProtectedClass
+     */
+    public function getProtected(): ProtectedClass {
+        if (Obj3::validateProtected($this->protected))  {
+            return $this->protected;
+        }
+        throw new Exception('never get to getProtected Obj3::protected');
+    }
+
+    /**
+     * @return ProtectedClass
+     */
+    public static function sampleProtected(): ProtectedClass {
+        return ProtectedClass::sample(); /*95:protected*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Protocol
+     */
+    public static function fromProtocol(stdClass $value): Protocol {
+        return Protocol::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toProtocol(): stdClass {
+        if (Obj3::validateProtocol($this->protocol))  {
+            return $this->protocol->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::protocol');
+    }
+
+    /**
+     * @param Protocol
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateProtocol(Protocol $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Protocol
+     */
+    public function getProtocol(): Protocol {
+        if (Obj3::validateProtocol($this->protocol))  {
+            return $this->protocol;
+        }
+        throw new Exception('never get to getProtocol Obj3::protocol');
+    }
+
+    /**
+     * @return Protocol
+     */
+    public static function sampleProtocol(): Protocol {
+        return Protocol::sample(); /*96:protocol*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj3::validateDummy($this->dummy)
+        || Obj3::validateIs($this->is)
+        || Obj3::validateIterable($this->iterable)
+        || Obj3::validateJdec($this->jdec)
+        || Obj3::validateJenc($this->jenc)
+        || Obj3::validateJpipe($this->jpipe)
+        || Obj3::validateJSON($this->json)
+        || Obj3::validateJSONConverter($this->jsonConverter)
+        || Obj3::validateJSONSerializer($this->jsonSerializer)
+        || Obj3::validateJSONToken($this->jsonToken)
+        || Obj3::validateJSONWriter($this->jsonWriter)
+        || Obj3::validateLambda($this->lambda)
+        || Obj3::validateLazy($this->lazy)
+        || Obj3::validateLeft($this->left)
+        || Obj3::validateLet($this->let)
+        || Obj3::validateList($this->list)
+        || Obj3::validateLock($this->lock)
+        || Obj3::validateLong($this->long)
+        || Obj3::validateMap($this->map)
+        || Obj3::validateMetadataPropertyHandling($this->metadataPropertyHandling)
+        || Obj3::validateModule($this->module)
+        || Obj3::validateMutable($this->mutable)
+        || Obj3::validateMutating($this->mutating)
+        || Obj3::validateNamespace($this->namespace)
+        || Obj3::validateNative($this->native)
+        || Obj3::validateNew($this->new)
+        || Obj3::validateNewtonsoft($this->newtonsoft)
+        || Obj3::validateNil($this->nil)
+        || Obj3::validateNo($this->no)
+        || Obj3::validateNoexcept($this->noexcept)
+        || Obj3::validateNonatomic($this->nonatomic)
+        || Obj3::validateNone($this->none)
+        || Obj3::validateNonlocal($this->nonlocal)
+        || Obj3::validateNonmutating($this->nonmutating)
+        || Obj3::validateNot($this->not)
+        || Obj3::validateNotEq($this->notEq)
+        || Obj3::validateNSString($this->nsString)
+        || Obj3::validateNull($this->null)
+        || Obj3::validateNullptr($this->nullptr)
+        || Obj3::validateNumber($this->number)
+        || Obj3::validateObj3None($this->obj3None)
+        || Obj3::validateObj3Null($this->obj3Null)
+        || Obj3::validateObj3Protocol($this->obj3Protocol)
+        || Obj3::validateObject($this->object)
+        || Obj3::validateOf($this->of)
+        || Obj3::validateOneway($this->oneway)
+        || Obj3::validateOpen($this->open)
+        || Obj3::validateOperator($this->operator)
+        || Obj3::validateOptional($this->optional)
+        || Obj3::validateOr($this->or)
+        || Obj3::validateOrEq($this->orEq)
+        || Obj3::validateOut($this->out)
+        || Obj3::validateOverride($this->override)
+        || Obj3::validatePackage($this->package)
+        || Obj3::validateParams($this->params)
+        || Obj3::validatePass($this->pass)
+        || Obj3::validatePort($this->port)
+        || Obj3::validatePostfix($this->postfix)
+        || Obj3::validatePrecedence($this->precedence)
+        || Obj3::validatePrefix($this->prefix)
+        || Obj3::validatePrint($this->print)
+        || Obj3::validatePrintMembers($this->printMembers)
+        || Obj3::validatePrintf($this->printf)
+        || Obj3::validatePrivate($this->private)
+        || Obj3::validateProtected($this->protected)
+        || Obj3::validateProtocol($this->protocol);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'is'} = $this->toIs();
+        $out->{'iterable'} = $this->toIterable();
+        $out->{'jdec'} = $this->toJdec();
+        $out->{'jenc'} = $this->toJenc();
+        $out->{'jpipe'} = $this->toJpipe();
+        $out->{'json'} = $this->toJSON();
+        $out->{'json_converter'} = $this->toJSONConverter();
+        $out->{'json_serializer'} = $this->toJSONSerializer();
+        $out->{'json_token'} = $this->toJSONToken();
+        $out->{'json_writer'} = $this->toJSONWriter();
+        $out->{'lambda'} = $this->toLambda();
+        $out->{'lazy'} = $this->toLazy();
+        $out->{'left'} = $this->toLeft();
+        $out->{'let'} = $this->toLet();
+        $out->{'list'} = $this->toList();
+        $out->{'lock'} = $this->toLock();
+        $out->{'long'} = $this->toLong();
+        $out->{'map'} = $this->toMap();
+        $out->{'metadata_property_handling'} = $this->toMetadataPropertyHandling();
+        $out->{'module'} = $this->toModule();
+        $out->{'mutable'} = $this->toMutable();
+        $out->{'mutating'} = $this->toMutating();
+        $out->{'namespace'} = $this->toNamespace();
+        $out->{'native'} = $this->toNative();
+        $out->{'new'} = $this->toNew();
+        $out->{'newtonsoft'} = $this->toNewtonsoft();
+        $out->{'nil'} = $this->toNil();
+        $out->{'NO'} = $this->toNo();
+        $out->{'noexcept'} = $this->toNoexcept();
+        $out->{'nonatomic'} = $this->toNonatomic();
+        $out->{'None'} = $this->toNone();
+        $out->{'nonlocal'} = $this->toNonlocal();
+        $out->{'nonmutating'} = $this->toNonmutating();
+        $out->{'not'} = $this->toNot();
+        $out->{'not_eq'} = $this->toNotEq();
+        $out->{'NSString'} = $this->toNSString();
+        $out->{'NULL'} = $this->toNull();
+        $out->{'nullptr'} = $this->toNullptr();
+        $out->{'number'} = $this->toNumber();
+        $out->{'none'} = $this->toObj3None();
+        $out->{'null'} = $this->toObj3Null();
+        $out->{'protocol'} = $this->toObj3Protocol();
+        $out->{'object'} = $this->toObject();
+        $out->{'of'} = $this->toOf();
+        $out->{'oneway'} = $this->toOneway();
+        $out->{'open'} = $this->toOpen();
+        $out->{'operator'} = $this->toOperator();
+        $out->{'optional'} = $this->toOptional();
+        $out->{'or'} = $this->toOr();
+        $out->{'or_eq'} = $this->toOrEq();
+        $out->{'out'} = $this->toOut();
+        $out->{'override'} = $this->toOverride();
+        $out->{'package'} = $this->toPackage();
+        $out->{'params'} = $this->toParams();
+        $out->{'pass'} = $this->toPass();
+        $out->{'port'} = $this->toPort();
+        $out->{'postfix'} = $this->toPostfix();
+        $out->{'precedence'} = $this->toPrecedence();
+        $out->{'prefix'} = $this->toPrefix();
+        $out->{'print'} = $this->toPrint();
+        $out->{'printMembers'} = $this->toPrintMembers();
+        $out->{'printf'} = $this->toPrintf();
+        $out->{'private'} = $this->toPrivate();
+        $out->{'protected'} = $this->toProtected();
+        $out->{'Protocol'} = $this->toProtocol();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj3
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj3 {
+        return new Obj3(
+         Obj3::fromDummy($obj->{'dummy'})
+        ,Obj3::fromIs($obj->{'is'})
+        ,Obj3::fromIterable($obj->{'iterable'})
+        ,Obj3::fromJdec($obj->{'jdec'})
+        ,Obj3::fromJenc($obj->{'jenc'})
+        ,Obj3::fromJpipe($obj->{'jpipe'})
+        ,Obj3::fromJSON($obj->{'json'})
+        ,Obj3::fromJSONConverter($obj->{'json_converter'})
+        ,Obj3::fromJSONSerializer($obj->{'json_serializer'})
+        ,Obj3::fromJSONToken($obj->{'json_token'})
+        ,Obj3::fromJSONWriter($obj->{'json_writer'})
+        ,Obj3::fromLambda($obj->{'lambda'})
+        ,Obj3::fromLazy($obj->{'lazy'})
+        ,Obj3::fromLeft($obj->{'left'})
+        ,Obj3::fromLet($obj->{'let'})
+        ,Obj3::fromList($obj->{'list'})
+        ,Obj3::fromLock($obj->{'lock'})
+        ,Obj3::fromLong($obj->{'long'})
+        ,Obj3::fromMap($obj->{'map'})
+        ,Obj3::fromMetadataPropertyHandling($obj->{'metadata_property_handling'})
+        ,Obj3::fromModule($obj->{'module'})
+        ,Obj3::fromMutable($obj->{'mutable'})
+        ,Obj3::fromMutating($obj->{'mutating'})
+        ,Obj3::fromNamespace($obj->{'namespace'})
+        ,Obj3::fromNative($obj->{'native'})
+        ,Obj3::fromNew($obj->{'new'})
+        ,Obj3::fromNewtonsoft($obj->{'newtonsoft'})
+        ,Obj3::fromNil($obj->{'nil'})
+        ,Obj3::fromNo($obj->{'NO'})
+        ,Obj3::fromNoexcept($obj->{'noexcept'})
+        ,Obj3::fromNonatomic($obj->{'nonatomic'})
+        ,Obj3::fromNone($obj->{'None'})
+        ,Obj3::fromNonlocal($obj->{'nonlocal'})
+        ,Obj3::fromNonmutating($obj->{'nonmutating'})
+        ,Obj3::fromNot($obj->{'not'})
+        ,Obj3::fromNotEq($obj->{'not_eq'})
+        ,Obj3::fromNSString($obj->{'NSString'})
+        ,Obj3::fromNull($obj->{'NULL'})
+        ,Obj3::fromNullptr($obj->{'nullptr'})
+        ,Obj3::fromNumber($obj->{'number'})
+        ,Obj3::fromObj3None($obj->{'none'})
+        ,Obj3::fromObj3Null($obj->{'null'})
+        ,Obj3::fromObj3Protocol($obj->{'protocol'})
+        ,Obj3::fromObject($obj->{'object'})
+        ,Obj3::fromOf($obj->{'of'})
+        ,Obj3::fromOneway($obj->{'oneway'})
+        ,Obj3::fromOpen($obj->{'open'})
+        ,Obj3::fromOperator($obj->{'operator'})
+        ,Obj3::fromOptional($obj->{'optional'})
+        ,Obj3::fromOr($obj->{'or'})
+        ,Obj3::fromOrEq($obj->{'or_eq'})
+        ,Obj3::fromOut($obj->{'out'})
+        ,Obj3::fromOverride($obj->{'override'})
+        ,Obj3::fromPackage($obj->{'package'})
+        ,Obj3::fromParams($obj->{'params'})
+        ,Obj3::fromPass($obj->{'pass'})
+        ,Obj3::fromPort($obj->{'port'})
+        ,Obj3::fromPostfix($obj->{'postfix'})
+        ,Obj3::fromPrecedence($obj->{'precedence'})
+        ,Obj3::fromPrefix($obj->{'prefix'})
+        ,Obj3::fromPrint($obj->{'print'})
+        ,Obj3::fromPrintMembers($obj->{'printMembers'})
+        ,Obj3::fromPrintf($obj->{'printf'})
+        ,Obj3::fromPrivate($obj->{'private'})
+        ,Obj3::fromProtected($obj->{'protected'})
+        ,Obj3::fromProtocol($obj->{'Protocol'})
+        );
+    }
+
+    /**
+     * @return Obj3
+     */
+    public static function sample(): Obj3 {
+        return new Obj3(
+         Obj3::sampleDummy()
+        ,Obj3::sampleIs()
+        ,Obj3::sampleIterable()
+        ,Obj3::sampleJdec()
+        ,Obj3::sampleJenc()
+        ,Obj3::sampleJpipe()
+        ,Obj3::sampleJSON()
+        ,Obj3::sampleJSONConverter()
+        ,Obj3::sampleJSONSerializer()
+        ,Obj3::sampleJSONToken()
+        ,Obj3::sampleJSONWriter()
+        ,Obj3::sampleLambda()
+        ,Obj3::sampleLazy()
+        ,Obj3::sampleLeft()
+        ,Obj3::sampleLet()
+        ,Obj3::sampleList()
+        ,Obj3::sampleLock()
+        ,Obj3::sampleLong()
+        ,Obj3::sampleMap()
+        ,Obj3::sampleMetadataPropertyHandling()
+        ,Obj3::sampleModule()
+        ,Obj3::sampleMutable()
+        ,Obj3::sampleMutating()
+        ,Obj3::sampleNamespace()
+        ,Obj3::sampleNative()
+        ,Obj3::sampleNew()
+        ,Obj3::sampleNewtonsoft()
+        ,Obj3::sampleNil()
+        ,Obj3::sampleNo()
+        ,Obj3::sampleNoexcept()
+        ,Obj3::sampleNonatomic()
+        ,Obj3::sampleNone()
+        ,Obj3::sampleNonlocal()
+        ,Obj3::sampleNonmutating()
+        ,Obj3::sampleNot()
+        ,Obj3::sampleNotEq()
+        ,Obj3::sampleNSString()
+        ,Obj3::sampleNull()
+        ,Obj3::sampleNullptr()
+        ,Obj3::sampleNumber()
+        ,Obj3::sampleObj3None()
+        ,Obj3::sampleObj3Null()
+        ,Obj3::sampleObj3Protocol()
+        ,Obj3::sampleObject()
+        ,Obj3::sampleOf()
+        ,Obj3::sampleOneway()
+        ,Obj3::sampleOpen()
+        ,Obj3::sampleOperator()
+        ,Obj3::sampleOptional()
+        ,Obj3::sampleOr()
+        ,Obj3::sampleOrEq()
+        ,Obj3::sampleOut()
+        ,Obj3::sampleOverride()
+        ,Obj3::samplePackage()
+        ,Obj3::sampleParams()
+        ,Obj3::samplePass()
+        ,Obj3::samplePort()
+        ,Obj3::samplePostfix()
+        ,Obj3::samplePrecedence()
+        ,Obj3::samplePrefix()
+        ,Obj3::samplePrint()
+        ,Obj3::samplePrintMembers()
+        ,Obj3::samplePrintf()
+        ,Obj3::samplePrivate()
+        ,Obj3::sampleProtected()
+        ,Obj3::sampleProtocol()
+        );
+    }
+}
+
+// This is an autogenerated file:Is
+
+class Is {
+    private int $is; // json:is Required
+
+    /**
+     * @param int $is
+     */
+    public function __construct(int $is) {
+        $this->is = $is;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromIs(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toIs(): int {
+        if (Is::validateIs($this->is))  {
+            return $this->is; /*int*/
+        }
+        throw new Exception('never get to this Is::is');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIs(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getIs(): int {
+        if (Is::validateIs($this->is))  {
+            return $this->is;
+        }
+        throw new Exception('never get to getIs Is::is');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleIs(): int {
+        return 31; /*31:is*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Is::validateIs($this->is);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'is'} = $this->toIs();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Is
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Is {
+        return new Is(
+         Is::fromIs($obj->{'is'})
+        );
+    }
+
+    /**
+     * @return Is
+     */
+    public static function sample(): Is {
+        return new Is(
+         Is::sampleIs()
+        );
+    }
+}
+
+// This is an autogenerated file:IterableClass
+
+class IterableClass {
+    private int $iterable; // json:iterable Required
+
+    /**
+     * @param int $iterable
+     */
+    public function __construct(int $iterable) {
+        $this->iterable = $iterable;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromIterable(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toIterable(): int {
+        if (IterableClass::validateIterable($this->iterable))  {
+            return $this->iterable; /*int*/
+        }
+        throw new Exception('never get to this IterableClass::iterable');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIterable(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getIterable(): int {
+        if (IterableClass::validateIterable($this->iterable))  {
+            return $this->iterable;
+        }
+        throw new Exception('never get to getIterable IterableClass::iterable');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleIterable(): int {
+        return 31; /*31:iterable*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return IterableClass::validateIterable($this->iterable);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'iterable'} = $this->toIterable();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return IterableClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): IterableClass {
+        return new IterableClass(
+         IterableClass::fromIterable($obj->{'iterable'})
+        );
+    }
+
+    /**
+     * @return IterableClass
+     */
+    public static function sample(): IterableClass {
+        return new IterableClass(
+         IterableClass::sampleIterable()
+        );
+    }
+}
+
+// This is an autogenerated file:Jdec
+
+class Jdec {
+    private int $jdec; // json:jdec Required
+
+    /**
+     * @param int $jdec
+     */
+    public function __construct(int $jdec) {
+        $this->jdec = $jdec;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJdec(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJdec(): int {
+        if (Jdec::validateJdec($this->jdec))  {
+            return $this->jdec; /*int*/
+        }
+        throw new Exception('never get to this Jdec::jdec');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJdec(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJdec(): int {
+        if (Jdec::validateJdec($this->jdec))  {
+            return $this->jdec;
+        }
+        throw new Exception('never get to getJdec Jdec::jdec');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJdec(): int {
+        return 31; /*31:jdec*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Jdec::validateJdec($this->jdec);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'jdec'} = $this->toJdec();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Jdec
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Jdec {
+        return new Jdec(
+         Jdec::fromJdec($obj->{'jdec'})
+        );
+    }
+
+    /**
+     * @return Jdec
+     */
+    public static function sample(): Jdec {
+        return new Jdec(
+         Jdec::sampleJdec()
+        );
+    }
+}
+
+// This is an autogenerated file:Jenc
+
+class Jenc {
+    private int $jenc; // json:jenc Required
+
+    /**
+     * @param int $jenc
+     */
+    public function __construct(int $jenc) {
+        $this->jenc = $jenc;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJenc(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJenc(): int {
+        if (Jenc::validateJenc($this->jenc))  {
+            return $this->jenc; /*int*/
+        }
+        throw new Exception('never get to this Jenc::jenc');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJenc(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJenc(): int {
+        if (Jenc::validateJenc($this->jenc))  {
+            return $this->jenc;
+        }
+        throw new Exception('never get to getJenc Jenc::jenc');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJenc(): int {
+        return 31; /*31:jenc*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Jenc::validateJenc($this->jenc);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'jenc'} = $this->toJenc();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Jenc
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Jenc {
+        return new Jenc(
+         Jenc::fromJenc($obj->{'jenc'})
+        );
+    }
+
+    /**
+     * @return Jenc
+     */
+    public static function sample(): Jenc {
+        return new Jenc(
+         Jenc::sampleJenc()
+        );
+    }
+}
+
+// This is an autogenerated file:Jpipe
+
+class Jpipe {
+    private int $jpipe; // json:jpipe Required
+
+    /**
+     * @param int $jpipe
+     */
+    public function __construct(int $jpipe) {
+        $this->jpipe = $jpipe;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJpipe(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJpipe(): int {
+        if (Jpipe::validateJpipe($this->jpipe))  {
+            return $this->jpipe; /*int*/
+        }
+        throw new Exception('never get to this Jpipe::jpipe');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJpipe(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJpipe(): int {
+        if (Jpipe::validateJpipe($this->jpipe))  {
+            return $this->jpipe;
+        }
+        throw new Exception('never get to getJpipe Jpipe::jpipe');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJpipe(): int {
+        return 31; /*31:jpipe*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Jpipe::validateJpipe($this->jpipe);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'jpipe'} = $this->toJpipe();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Jpipe
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Jpipe {
+        return new Jpipe(
+         Jpipe::fromJpipe($obj->{'jpipe'})
+        );
+    }
+
+    /**
+     * @return Jpipe
+     */
+    public static function sample(): Jpipe {
+        return new Jpipe(
+         Jpipe::sampleJpipe()
+        );
+    }
+}
+
+// This is an autogenerated file:JSON
+
+class JSON {
+    private int $json; // json:json Required
+
+    /**
+     * @param int $json
+     */
+    public function __construct(int $json) {
+        $this->json = $json;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJSON(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJSON(): int {
+        if (JSON::validateJSON($this->json))  {
+            return $this->json; /*int*/
+        }
+        throw new Exception('never get to this JSON::json');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSON(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJSON(): int {
+        if (JSON::validateJSON($this->json))  {
+            return $this->json;
+        }
+        throw new Exception('never get to getJSON JSON::json');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJSON(): int {
+        return 31; /*31:json*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return JSON::validateJSON($this->json);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'json'} = $this->toJSON();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return JSON
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): JSON {
+        return new JSON(
+         JSON::fromJSON($obj->{'json'})
+        );
+    }
+
+    /**
+     * @return JSON
+     */
+    public static function sample(): JSON {
+        return new JSON(
+         JSON::sampleJSON()
+        );
+    }
+}
+
+// This is an autogenerated file:JSONConverter
+
+class JSONConverter {
+    private int $jsonConverter; // json:json_converter Required
+
+    /**
+     * @param int $jsonConverter
+     */
+    public function __construct(int $jsonConverter) {
+        $this->jsonConverter = $jsonConverter;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJSONConverter(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJSONConverter(): int {
+        if (JSONConverter::validateJSONConverter($this->jsonConverter))  {
+            return $this->jsonConverter; /*int*/
+        }
+        throw new Exception('never get to this JSONConverter::jsonConverter');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONConverter(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJSONConverter(): int {
+        if (JSONConverter::validateJSONConverter($this->jsonConverter))  {
+            return $this->jsonConverter;
+        }
+        throw new Exception('never get to getJSONConverter JSONConverter::jsonConverter');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJSONConverter(): int {
+        return 31; /*31:jsonConverter*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return JSONConverter::validateJSONConverter($this->jsonConverter);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'json_converter'} = $this->toJSONConverter();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return JSONConverter
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): JSONConverter {
+        return new JSONConverter(
+         JSONConverter::fromJSONConverter($obj->{'json_converter'})
+        );
+    }
+
+    /**
+     * @return JSONConverter
+     */
+    public static function sample(): JSONConverter {
+        return new JSONConverter(
+         JSONConverter::sampleJSONConverter()
+        );
+    }
+}
+
+// This is an autogenerated file:JSONSerializer
+
+class JSONSerializer {
+    private int $jsonSerializer; // json:json_serializer Required
+
+    /**
+     * @param int $jsonSerializer
+     */
+    public function __construct(int $jsonSerializer) {
+        $this->jsonSerializer = $jsonSerializer;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJSONSerializer(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJSONSerializer(): int {
+        if (JSONSerializer::validateJSONSerializer($this->jsonSerializer))  {
+            return $this->jsonSerializer; /*int*/
+        }
+        throw new Exception('never get to this JSONSerializer::jsonSerializer');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONSerializer(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJSONSerializer(): int {
+        if (JSONSerializer::validateJSONSerializer($this->jsonSerializer))  {
+            return $this->jsonSerializer;
+        }
+        throw new Exception('never get to getJSONSerializer JSONSerializer::jsonSerializer');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJSONSerializer(): int {
+        return 31; /*31:jsonSerializer*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return JSONSerializer::validateJSONSerializer($this->jsonSerializer);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'json_serializer'} = $this->toJSONSerializer();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return JSONSerializer
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): JSONSerializer {
+        return new JSONSerializer(
+         JSONSerializer::fromJSONSerializer($obj->{'json_serializer'})
+        );
+    }
+
+    /**
+     * @return JSONSerializer
+     */
+    public static function sample(): JSONSerializer {
+        return new JSONSerializer(
+         JSONSerializer::sampleJSONSerializer()
+        );
+    }
+}
+
+// This is an autogenerated file:JSONToken
+
+class JSONToken {
+    private int $jsonToken; // json:json_token Required
+
+    /**
+     * @param int $jsonToken
+     */
+    public function __construct(int $jsonToken) {
+        $this->jsonToken = $jsonToken;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJSONToken(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJSONToken(): int {
+        if (JSONToken::validateJSONToken($this->jsonToken))  {
+            return $this->jsonToken; /*int*/
+        }
+        throw new Exception('never get to this JSONToken::jsonToken');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONToken(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJSONToken(): int {
+        if (JSONToken::validateJSONToken($this->jsonToken))  {
+            return $this->jsonToken;
+        }
+        throw new Exception('never get to getJSONToken JSONToken::jsonToken');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJSONToken(): int {
+        return 31; /*31:jsonToken*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return JSONToken::validateJSONToken($this->jsonToken);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'json_token'} = $this->toJSONToken();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return JSONToken
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): JSONToken {
+        return new JSONToken(
+         JSONToken::fromJSONToken($obj->{'json_token'})
+        );
+    }
+
+    /**
+     * @return JSONToken
+     */
+    public static function sample(): JSONToken {
+        return new JSONToken(
+         JSONToken::sampleJSONToken()
+        );
+    }
+}
+
+// This is an autogenerated file:JSONWriter
+
+class JSONWriter {
+    private int $jsonWriter; // json:json_writer Required
+
+    /**
+     * @param int $jsonWriter
+     */
+    public function __construct(int $jsonWriter) {
+        $this->jsonWriter = $jsonWriter;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromJSONWriter(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toJSONWriter(): int {
+        if (JSONWriter::validateJSONWriter($this->jsonWriter))  {
+            return $this->jsonWriter; /*int*/
+        }
+        throw new Exception('never get to this JSONWriter::jsonWriter');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateJSONWriter(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getJSONWriter(): int {
+        if (JSONWriter::validateJSONWriter($this->jsonWriter))  {
+            return $this->jsonWriter;
+        }
+        throw new Exception('never get to getJSONWriter JSONWriter::jsonWriter');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleJSONWriter(): int {
+        return 31; /*31:jsonWriter*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return JSONWriter::validateJSONWriter($this->jsonWriter);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'json_writer'} = $this->toJSONWriter();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return JSONWriter
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): JSONWriter {
+        return new JSONWriter(
+         JSONWriter::fromJSONWriter($obj->{'json_writer'})
+        );
+    }
+
+    /**
+     * @return JSONWriter
+     */
+    public static function sample(): JSONWriter {
+        return new JSONWriter(
+         JSONWriter::sampleJSONWriter()
+        );
+    }
+}
+
+// This is an autogenerated file:Lambda
+
+class Lambda {
+    private int $lambda; // json:lambda Required
+
+    /**
+     * @param int $lambda
+     */
+    public function __construct(int $lambda) {
+        $this->lambda = $lambda;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLambda(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLambda(): int {
+        if (Lambda::validateLambda($this->lambda))  {
+            return $this->lambda; /*int*/
+        }
+        throw new Exception('never get to this Lambda::lambda');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLambda(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLambda(): int {
+        if (Lambda::validateLambda($this->lambda))  {
+            return $this->lambda;
+        }
+        throw new Exception('never get to getLambda Lambda::lambda');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLambda(): int {
+        return 31; /*31:lambda*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Lambda::validateLambda($this->lambda);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'lambda'} = $this->toLambda();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Lambda
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Lambda {
+        return new Lambda(
+         Lambda::fromLambda($obj->{'lambda'})
+        );
+    }
+
+    /**
+     * @return Lambda
+     */
+    public static function sample(): Lambda {
+        return new Lambda(
+         Lambda::sampleLambda()
+        );
+    }
+}
+
+// This is an autogenerated file:Lazy
+
+class Lazy {
+    private int $lazy; // json:lazy Required
+
+    /**
+     * @param int $lazy
+     */
+    public function __construct(int $lazy) {
+        $this->lazy = $lazy;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLazy(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLazy(): int {
+        if (Lazy::validateLazy($this->lazy))  {
+            return $this->lazy; /*int*/
+        }
+        throw new Exception('never get to this Lazy::lazy');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLazy(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLazy(): int {
+        if (Lazy::validateLazy($this->lazy))  {
+            return $this->lazy;
+        }
+        throw new Exception('never get to getLazy Lazy::lazy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLazy(): int {
+        return 31; /*31:lazy*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Lazy::validateLazy($this->lazy);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'lazy'} = $this->toLazy();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Lazy
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Lazy {
+        return new Lazy(
+         Lazy::fromLazy($obj->{'lazy'})
+        );
+    }
+
+    /**
+     * @return Lazy
+     */
+    public static function sample(): Lazy {
+        return new Lazy(
+         Lazy::sampleLazy()
+        );
+    }
+}
+
+// This is an autogenerated file:Left
+
+class Left {
+    private int $left; // json:left Required
+
+    /**
+     * @param int $left
+     */
+    public function __construct(int $left) {
+        $this->left = $left;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLeft(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLeft(): int {
+        if (Left::validateLeft($this->left))  {
+            return $this->left; /*int*/
+        }
+        throw new Exception('never get to this Left::left');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLeft(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLeft(): int {
+        if (Left::validateLeft($this->left))  {
+            return $this->left;
+        }
+        throw new Exception('never get to getLeft Left::left');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLeft(): int {
+        return 31; /*31:left*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Left::validateLeft($this->left);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'left'} = $this->toLeft();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Left
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Left {
+        return new Left(
+         Left::fromLeft($obj->{'left'})
+        );
+    }
+
+    /**
+     * @return Left
+     */
+    public static function sample(): Left {
+        return new Left(
+         Left::sampleLeft()
+        );
+    }
+}
+
+// This is an autogenerated file:Let
+
+class Let {
+    private int $let; // json:let Required
+
+    /**
+     * @param int $let
+     */
+    public function __construct(int $let) {
+        $this->let = $let;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLet(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLet(): int {
+        if (Let::validateLet($this->let))  {
+            return $this->let; /*int*/
+        }
+        throw new Exception('never get to this Let::let');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLet(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLet(): int {
+        if (Let::validateLet($this->let))  {
+            return $this->let;
+        }
+        throw new Exception('never get to getLet Let::let');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLet(): int {
+        return 31; /*31:let*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Let::validateLet($this->let);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'let'} = $this->toLet();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Let
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Let {
+        return new Let(
+         Let::fromLet($obj->{'let'})
+        );
+    }
+
+    /**
+     * @return Let
+     */
+    public static function sample(): Let {
+        return new Let(
+         Let::sampleLet()
+        );
+    }
+}
+
+// This is an autogenerated file:ListClass
+
+class ListClass {
+    private int $list; // json:list Required
+
+    /**
+     * @param int $list
+     */
+    public function __construct(int $list) {
+        $this->list = $list;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromList(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toList(): int {
+        if (ListClass::validateList($this->list))  {
+            return $this->list; /*int*/
+        }
+        throw new Exception('never get to this ListClass::list');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateList(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getList(): int {
+        if (ListClass::validateList($this->list))  {
+            return $this->list;
+        }
+        throw new Exception('never get to getList ListClass::list');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleList(): int {
+        return 31; /*31:list*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ListClass::validateList($this->list);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'list'} = $this->toList();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ListClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ListClass {
+        return new ListClass(
+         ListClass::fromList($obj->{'list'})
+        );
+    }
+
+    /**
+     * @return ListClass
+     */
+    public static function sample(): ListClass {
+        return new ListClass(
+         ListClass::sampleList()
+        );
+    }
+}
+
+// This is an autogenerated file:Lock
+
+class Lock {
+    private int $lock; // json:lock Required
+
+    /**
+     * @param int $lock
+     */
+    public function __construct(int $lock) {
+        $this->lock = $lock;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLock(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLock(): int {
+        if (Lock::validateLock($this->lock))  {
+            return $this->lock; /*int*/
+        }
+        throw new Exception('never get to this Lock::lock');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLock(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLock(): int {
+        if (Lock::validateLock($this->lock))  {
+            return $this->lock;
+        }
+        throw new Exception('never get to getLock Lock::lock');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLock(): int {
+        return 31; /*31:lock*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Lock::validateLock($this->lock);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'lock'} = $this->toLock();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Lock
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Lock {
+        return new Lock(
+         Lock::fromLock($obj->{'lock'})
+        );
+    }
+
+    /**
+     * @return Lock
+     */
+    public static function sample(): Lock {
+        return new Lock(
+         Lock::sampleLock()
+        );
+    }
+}
+
+// This is an autogenerated file:Long
+
+class Long {
+    private int $long; // json:long Required
+
+    /**
+     * @param int $long
+     */
+    public function __construct(int $long) {
+        $this->long = $long;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLong(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLong(): int {
+        if (Long::validateLong($this->long))  {
+            return $this->long; /*int*/
+        }
+        throw new Exception('never get to this Long::long');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLong(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLong(): int {
+        if (Long::validateLong($this->long))  {
+            return $this->long;
+        }
+        throw new Exception('never get to getLong Long::long');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLong(): int {
+        return 31; /*31:long*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Long::validateLong($this->long);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'long'} = $this->toLong();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Long
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Long {
+        return new Long(
+         Long::fromLong($obj->{'long'})
+        );
+    }
+
+    /**
+     * @return Long
+     */
+    public static function sample(): Long {
+        return new Long(
+         Long::sampleLong()
+        );
+    }
+}
+
+// This is an autogenerated file:Map
+
+class Map {
+    private int $map; // json:map Required
+
+    /**
+     * @param int $map
+     */
+    public function __construct(int $map) {
+        $this->map = $map;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromMap(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toMap(): int {
+        if (Map::validateMap($this->map))  {
+            return $this->map; /*int*/
+        }
+        throw new Exception('never get to this Map::map');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMap(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getMap(): int {
+        if (Map::validateMap($this->map))  {
+            return $this->map;
+        }
+        throw new Exception('never get to getMap Map::map');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleMap(): int {
+        return 31; /*31:map*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Map::validateMap($this->map);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'map'} = $this->toMap();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Map
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Map {
+        return new Map(
+         Map::fromMap($obj->{'map'})
+        );
+    }
+
+    /**
+     * @return Map
+     */
+    public static function sample(): Map {
+        return new Map(
+         Map::sampleMap()
+        );
+    }
+}
+
+// This is an autogenerated file:MetadataPropertyHandling
+
+class MetadataPropertyHandling {
+    private int $metadataPropertyHandling; // json:metadata_property_handling Required
+
+    /**
+     * @param int $metadataPropertyHandling
+     */
+    public function __construct(int $metadataPropertyHandling) {
+        $this->metadataPropertyHandling = $metadataPropertyHandling;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromMetadataPropertyHandling(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toMetadataPropertyHandling(): int {
+        if (MetadataPropertyHandling::validateMetadataPropertyHandling($this->metadataPropertyHandling))  {
+            return $this->metadataPropertyHandling; /*int*/
+        }
+        throw new Exception('never get to this MetadataPropertyHandling::metadataPropertyHandling');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMetadataPropertyHandling(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getMetadataPropertyHandling(): int {
+        if (MetadataPropertyHandling::validateMetadataPropertyHandling($this->metadataPropertyHandling))  {
+            return $this->metadataPropertyHandling;
+        }
+        throw new Exception('never get to getMetadataPropertyHandling MetadataPropertyHandling::metadataPropertyHandling');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleMetadataPropertyHandling(): int {
+        return 31; /*31:metadataPropertyHandling*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return MetadataPropertyHandling::validateMetadataPropertyHandling($this->metadataPropertyHandling);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'metadata_property_handling'} = $this->toMetadataPropertyHandling();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return MetadataPropertyHandling
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): MetadataPropertyHandling {
+        return new MetadataPropertyHandling(
+         MetadataPropertyHandling::fromMetadataPropertyHandling($obj->{'metadata_property_handling'})
+        );
+    }
+
+    /**
+     * @return MetadataPropertyHandling
+     */
+    public static function sample(): MetadataPropertyHandling {
+        return new MetadataPropertyHandling(
+         MetadataPropertyHandling::sampleMetadataPropertyHandling()
+        );
+    }
+}
+
+// This is an autogenerated file:Module
+
+class Module {
+    private int $module; // json:module Required
+
+    /**
+     * @param int $module
+     */
+    public function __construct(int $module) {
+        $this->module = $module;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromModule(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toModule(): int {
+        if (Module::validateModule($this->module))  {
+            return $this->module; /*int*/
+        }
+        throw new Exception('never get to this Module::module');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateModule(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getModule(): int {
+        if (Module::validateModule($this->module))  {
+            return $this->module;
+        }
+        throw new Exception('never get to getModule Module::module');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleModule(): int {
+        return 31; /*31:module*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Module::validateModule($this->module);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'module'} = $this->toModule();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Module
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Module {
+        return new Module(
+         Module::fromModule($obj->{'module'})
+        );
+    }
+
+    /**
+     * @return Module
+     */
+    public static function sample(): Module {
+        return new Module(
+         Module::sampleModule()
+        );
+    }
+}
+
+// This is an autogenerated file:Mutable
+
+class Mutable {
+    private int $mutable; // json:mutable Required
+
+    /**
+     * @param int $mutable
+     */
+    public function __construct(int $mutable) {
+        $this->mutable = $mutable;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromMutable(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toMutable(): int {
+        if (Mutable::validateMutable($this->mutable))  {
+            return $this->mutable; /*int*/
+        }
+        throw new Exception('never get to this Mutable::mutable');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMutable(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getMutable(): int {
+        if (Mutable::validateMutable($this->mutable))  {
+            return $this->mutable;
+        }
+        throw new Exception('never get to getMutable Mutable::mutable');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleMutable(): int {
+        return 31; /*31:mutable*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Mutable::validateMutable($this->mutable);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'mutable'} = $this->toMutable();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Mutable
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Mutable {
+        return new Mutable(
+         Mutable::fromMutable($obj->{'mutable'})
+        );
+    }
+
+    /**
+     * @return Mutable
+     */
+    public static function sample(): Mutable {
+        return new Mutable(
+         Mutable::sampleMutable()
+        );
+    }
+}
+
+// This is an autogenerated file:Mutating
+
+class Mutating {
+    private int $mutating; // json:mutating Required
+
+    /**
+     * @param int $mutating
+     */
+    public function __construct(int $mutating) {
+        $this->mutating = $mutating;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromMutating(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toMutating(): int {
+        if (Mutating::validateMutating($this->mutating))  {
+            return $this->mutating; /*int*/
+        }
+        throw new Exception('never get to this Mutating::mutating');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateMutating(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getMutating(): int {
+        if (Mutating::validateMutating($this->mutating))  {
+            return $this->mutating;
+        }
+        throw new Exception('never get to getMutating Mutating::mutating');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleMutating(): int {
+        return 31; /*31:mutating*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Mutating::validateMutating($this->mutating);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'mutating'} = $this->toMutating();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Mutating
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Mutating {
+        return new Mutating(
+         Mutating::fromMutating($obj->{'mutating'})
+        );
+    }
+
+    /**
+     * @return Mutating
+     */
+    public static function sample(): Mutating {
+        return new Mutating(
+         Mutating::sampleMutating()
+        );
+    }
+}
+
+// This is an autogenerated file:NamespaceClass
+
+class NamespaceClass {
+    private int $namespace; // json:namespace Required
+
+    /**
+     * @param int $namespace
+     */
+    public function __construct(int $namespace) {
+        $this->namespace = $namespace;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNamespace(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNamespace(): int {
+        if (NamespaceClass::validateNamespace($this->namespace))  {
+            return $this->namespace; /*int*/
+        }
+        throw new Exception('never get to this NamespaceClass::namespace');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNamespace(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNamespace(): int {
+        if (NamespaceClass::validateNamespace($this->namespace))  {
+            return $this->namespace;
+        }
+        throw new Exception('never get to getNamespace NamespaceClass::namespace');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNamespace(): int {
+        return 31; /*31:namespace*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return NamespaceClass::validateNamespace($this->namespace);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'namespace'} = $this->toNamespace();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NamespaceClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NamespaceClass {
+        return new NamespaceClass(
+         NamespaceClass::fromNamespace($obj->{'namespace'})
+        );
+    }
+
+    /**
+     * @return NamespaceClass
+     */
+    public static function sample(): NamespaceClass {
+        return new NamespaceClass(
+         NamespaceClass::sampleNamespace()
+        );
+    }
+}
+
+// This is an autogenerated file:Native
+
+class Native {
+    private int $native; // json:native Required
+
+    /**
+     * @param int $native
+     */
+    public function __construct(int $native) {
+        $this->native = $native;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNative(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNative(): int {
+        if (Native::validateNative($this->native))  {
+            return $this->native; /*int*/
+        }
+        throw new Exception('never get to this Native::native');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNative(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNative(): int {
+        if (Native::validateNative($this->native))  {
+            return $this->native;
+        }
+        throw new Exception('never get to getNative Native::native');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNative(): int {
+        return 31; /*31:native*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Native::validateNative($this->native);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'native'} = $this->toNative();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Native
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Native {
+        return new Native(
+         Native::fromNative($obj->{'native'})
+        );
+    }
+
+    /**
+     * @return Native
+     */
+    public static function sample(): Native {
+        return new Native(
+         Native::sampleNative()
+        );
+    }
+}
+
+// This is an autogenerated file:NewClass
+
+class NewClass {
+    private int $new; // json:new Required
+
+    /**
+     * @param int $new
+     */
+    public function __construct(int $new) {
+        $this->new = $new;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNew(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNew(): int {
+        if (NewClass::validateNew($this->new))  {
+            return $this->new; /*int*/
+        }
+        throw new Exception('never get to this NewClass::new');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNew(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNew(): int {
+        if (NewClass::validateNew($this->new))  {
+            return $this->new;
+        }
+        throw new Exception('never get to getNew NewClass::new');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNew(): int {
+        return 31; /*31:new*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return NewClass::validateNew($this->new);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'new'} = $this->toNew();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NewClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NewClass {
+        return new NewClass(
+         NewClass::fromNew($obj->{'new'})
+        );
+    }
+
+    /**
+     * @return NewClass
+     */
+    public static function sample(): NewClass {
+        return new NewClass(
+         NewClass::sampleNew()
+        );
+    }
+}
+
+// This is an autogenerated file:Newtonsoft
+
+class Newtonsoft {
+    private int $newtonsoft; // json:newtonsoft Required
+
+    /**
+     * @param int $newtonsoft
+     */
+    public function __construct(int $newtonsoft) {
+        $this->newtonsoft = $newtonsoft;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNewtonsoft(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNewtonsoft(): int {
+        if (Newtonsoft::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft; /*int*/
+        }
+        throw new Exception('never get to this Newtonsoft::newtonsoft');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNewtonsoft(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNewtonsoft(): int {
+        if (Newtonsoft::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft;
+        }
+        throw new Exception('never get to getNewtonsoft Newtonsoft::newtonsoft');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNewtonsoft(): int {
+        return 31; /*31:newtonsoft*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Newtonsoft::validateNewtonsoft($this->newtonsoft);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'newtonsoft'} = $this->toNewtonsoft();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Newtonsoft
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Newtonsoft {
+        return new Newtonsoft(
+         Newtonsoft::fromNewtonsoft($obj->{'newtonsoft'})
+        );
+    }
+
+    /**
+     * @return Newtonsoft
+     */
+    public static function sample(): Newtonsoft {
+        return new Newtonsoft(
+         Newtonsoft::sampleNewtonsoft()
+        );
+    }
+}
+
+// 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 {
+        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 {
+        return new No(
+         No::fromNo($obj->{'NO'})
+        );
+    }
+
+    /**
+     * @return No
+     */
+    public static function sample(): No {
+        return new No(
+         No::sampleNo()
+        );
+    }
+}
+
+// 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 {
+        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 {
+        return new Nonatomic(
+         Nonatomic::fromNonatomic($obj->{'nonatomic'})
+        );
+    }
+
+    /**
+     * @return Nonatomic
+     */
+    public static function sample(): Nonatomic {
+        return new Nonatomic(
+         Nonatomic::sampleNonatomic()
+        );
+    }
+}
+
+// This is an autogenerated file:None
+
+class None {
+    private int $none; // json:None Required
+
+    /**
+     * @param int $none
+     */
+    public function __construct(int $none) {
+        $this->none = $none;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNone(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNone(): int {
+        if (None::validateNone($this->none))  {
+            return $this->none; /*int*/
+        }
+        throw new Exception('never get to this None::none');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNone(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNone(): int {
+        if (None::validateNone($this->none))  {
+            return $this->none;
+        }
+        throw new Exception('never get to getNone None::none');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNone(): int {
+        return 31; /*31:none*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return None::validateNone($this->none);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'None'} = $this->toNone();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return None
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): None {
+        return new None(
+         None::fromNone($obj->{'None'})
+        );
+    }
+
+    /**
+     * @return None
+     */
+    public static function sample(): None {
+        return new None(
+         None::sampleNone()
+        );
+    }
+}
+
+// This is an autogenerated file:Nonlocal
+
+class Nonlocal {
+    private int $nonlocal; // json:nonlocal Required
+
+    /**
+     * @param int $nonlocal
+     */
+    public function __construct(int $nonlocal) {
+        $this->nonlocal = $nonlocal;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNonlocal(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNonlocal(): int {
+        if (Nonlocal::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal; /*int*/
+        }
+        throw new Exception('never get to this Nonlocal::nonlocal');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNonlocal(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNonlocal(): int {
+        if (Nonlocal::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal;
+        }
+        throw new Exception('never get to getNonlocal Nonlocal::nonlocal');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNonlocal(): int {
+        return 31; /*31:nonlocal*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Nonlocal::validateNonlocal($this->nonlocal);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'nonlocal'} = $this->toNonlocal();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Nonlocal
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Nonlocal {
+        return new Nonlocal(
+         Nonlocal::fromNonlocal($obj->{'nonlocal'})
+        );
+    }
+
+    /**
+     * @return Nonlocal
+     */
+    public static function sample(): Nonlocal {
+        return new Nonlocal(
+         Nonlocal::sampleNonlocal()
+        );
+    }
+}
+
+// This is an autogenerated file:Nonmutating
+
+class Nonmutating {
+    private int $nonmutating; // json:nonmutating Required
+
+    /**
+     * @param int $nonmutating
+     */
+    public function __construct(int $nonmutating) {
+        $this->nonmutating = $nonmutating;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNonmutating(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNonmutating(): int {
+        if (Nonmutating::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating; /*int*/
+        }
+        throw new Exception('never get to this Nonmutating::nonmutating');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNonmutating(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNonmutating(): int {
+        if (Nonmutating::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating;
+        }
+        throw new Exception('never get to getNonmutating Nonmutating::nonmutating');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNonmutating(): int {
+        return 31; /*31:nonmutating*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Nonmutating::validateNonmutating($this->nonmutating);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'nonmutating'} = $this->toNonmutating();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Nonmutating
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Nonmutating {
+        return new Nonmutating(
+         Nonmutating::fromNonmutating($obj->{'nonmutating'})
+        );
+    }
+
+    /**
+     * @return Nonmutating
+     */
+    public static function sample(): Nonmutating {
+        return new Nonmutating(
+         Nonmutating::sampleNonmutating()
+        );
+    }
+}
+
+// This is an autogenerated file:Not
+
+class Not {
+    private int $not; // json:not Required
+
+    /**
+     * @param int $not
+     */
+    public function __construct(int $not) {
+        $this->not = $not;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNot(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNot(): int {
+        if (Not::validateNot($this->not))  {
+            return $this->not; /*int*/
+        }
+        throw new Exception('never get to this Not::not');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNot(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNot(): int {
+        if (Not::validateNot($this->not))  {
+            return $this->not;
+        }
+        throw new Exception('never get to getNot Not::not');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNot(): int {
+        return 31; /*31:not*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Not::validateNot($this->not);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'not'} = $this->toNot();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Not
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Not {
+        return new Not(
+         Not::fromNot($obj->{'not'})
+        );
+    }
+
+    /**
+     * @return Not
+     */
+    public static function sample(): Not {
+        return new Not(
+         Not::sampleNot()
+        );
+    }
+}
+
+// This is an autogenerated file:NotEq
+
+class NotEq {
+    private int $notEq; // json:not_eq Required
+
+    /**
+     * @param int $notEq
+     */
+    public function __construct(int $notEq) {
+        $this->notEq = $notEq;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNotEq(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNotEq(): int {
+        if (NotEq::validateNotEq($this->notEq))  {
+            return $this->notEq; /*int*/
+        }
+        throw new Exception('never get to this NotEq::notEq');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNotEq(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNotEq(): int {
+        if (NotEq::validateNotEq($this->notEq))  {
+            return $this->notEq;
+        }
+        throw new Exception('never get to getNotEq NotEq::notEq');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNotEq(): int {
+        return 31; /*31:notEq*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return NotEq::validateNotEq($this->notEq);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'not_eq'} = $this->toNotEq();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NotEq
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NotEq {
+        return new NotEq(
+         NotEq::fromNotEq($obj->{'not_eq'})
+        );
+    }
+
+    /**
+     * @return NotEq
+     */
+    public static function sample(): NotEq {
+        return new NotEq(
+         NotEq::sampleNotEq()
+        );
+    }
+}
+
+// This is an autogenerated file:NSString
+
+class NSString {
+    private int $nsString; // json:NSString Required
+
+    /**
+     * @param int $nsString
+     */
+    public function __construct(int $nsString) {
+        $this->nsString = $nsString;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNSString(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNSString(): int {
+        if (NSString::validateNSString($this->nsString))  {
+            return $this->nsString; /*int*/
+        }
+        throw new Exception('never get to this NSString::nsString');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNSString(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNSString(): int {
+        if (NSString::validateNSString($this->nsString))  {
+            return $this->nsString;
+        }
+        throw new Exception('never get to getNSString NSString::nsString');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNSString(): int {
+        return 31; /*31:nsString*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return NSString::validateNSString($this->nsString);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'NSString'} = $this->toNSString();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NSString
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NSString {
+        return new NSString(
+         NSString::fromNSString($obj->{'NSString'})
+        );
+    }
+
+    /**
+     * @return NSString
+     */
+    public static function sample(): NSString {
+        return new NSString(
+         NSString::sampleNSString()
+        );
+    }
+}
+
+// This is an autogenerated file:NULLClass
+
+class NULLClass {
+    private int $null; // json:NULL Required
+
+    /**
+     * @param int $null
+     */
+    public function __construct(int $null) {
+        $this->null = $null;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNull(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNull(): int {
+        if (NULLClass::validateNull($this->null))  {
+            return $this->null; /*int*/
+        }
+        throw new Exception('never get to this NULLClass::null');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNull(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNull(): int {
+        if (NULLClass::validateNull($this->null))  {
+            return $this->null;
+        }
+        throw new Exception('never get to getNull NULLClass::null');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNull(): int {
+        return 31; /*31:null*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return NULLClass::validateNull($this->null);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'NULL'} = $this->toNull();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NULLClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NULLClass {
+        return new NULLClass(
+         NULLClass::fromNull($obj->{'NULL'})
+        );
+    }
+
+    /**
+     * @return NULLClass
+     */
+    public static function sample(): NULLClass {
+        return new NULLClass(
+         NULLClass::sampleNull()
+        );
+    }
+}
+
+// This is an autogenerated file:Nullptr
+
+class Nullptr {
+    private int $nullptr; // json:nullptr Required
+
+    /**
+     * @param int $nullptr
+     */
+    public function __construct(int $nullptr) {
+        $this->nullptr = $nullptr;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNullptr(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNullptr(): int {
+        if (Nullptr::validateNullptr($this->nullptr))  {
+            return $this->nullptr; /*int*/
+        }
+        throw new Exception('never get to this Nullptr::nullptr');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNullptr(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNullptr(): int {
+        if (Nullptr::validateNullptr($this->nullptr))  {
+            return $this->nullptr;
+        }
+        throw new Exception('never get to getNullptr Nullptr::nullptr');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNullptr(): int {
+        return 31; /*31:nullptr*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Nullptr::validateNullptr($this->nullptr);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'nullptr'} = $this->toNullptr();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Nullptr
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Nullptr {
+        return new Nullptr(
+         Nullptr::fromNullptr($obj->{'nullptr'})
+        );
+    }
+
+    /**
+     * @return Nullptr
+     */
+    public static function sample(): Nullptr {
+        return new Nullptr(
+         Nullptr::sampleNullptr()
+        );
+    }
+}
+
+// This is an autogenerated file:Number
+
+class Number {
+    private int $number; // json:number Required
+
+    /**
+     * @param int $number
+     */
+    public function __construct(int $number) {
+        $this->number = $number;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNumber(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNumber(): int {
+        if (Number::validateNumber($this->number))  {
+            return $this->number; /*int*/
+        }
+        throw new Exception('never get to this Number::number');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNumber(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNumber(): int {
+        if (Number::validateNumber($this->number))  {
+            return $this->number;
+        }
+        throw new Exception('never get to getNumber Number::number');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNumber(): int {
+        return 31; /*31:number*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Number::validateNumber($this->number);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'number'} = $this->toNumber();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Number
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Number {
+        return new Number(
+         Number::fromNumber($obj->{'number'})
+        );
+    }
+
+    /**
+     * @return Number
+     */
+    public static function sample(): Number {
+        return new Number(
+         Number::sampleNumber()
+        );
+    }
+}
+
+// This is an autogenerated file:NoneClass
+
+class NoneClass {
+    private int $none; // json:none Required
+
+    /**
+     * @param int $none
+     */
+    public function __construct(int $none) {
+        $this->none = $none;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNone(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNone(): int {
+        if (NoneClass::validateNone($this->none))  {
+            return $this->none; /*int*/
+        }
+        throw new Exception('never get to this NoneClass::none');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNone(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNone(): int {
+        if (NoneClass::validateNone($this->none))  {
+            return $this->none;
+        }
+        throw new Exception('never get to getNone NoneClass::none');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNone(): int {
+        return 31; /*31:none*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return NoneClass::validateNone($this->none);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'none'} = $this->toNone();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NoneClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NoneClass {
+        return new NoneClass(
+         NoneClass::fromNone($obj->{'none'})
+        );
+    }
+
+    /**
+     * @return NoneClass
+     */
+    public static function sample(): NoneClass {
+        return new NoneClass(
+         NoneClass::sampleNone()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj3Null
+
+class Obj3Null {
+    private int $null; // json:null Required
+
+    /**
+     * @param int $null
+     */
+    public function __construct(int $null) {
+        $this->null = $null;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNull(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNull(): int {
+        if (Obj3Null::validateNull($this->null))  {
+            return $this->null; /*int*/
+        }
+        throw new Exception('never get to this Obj3Null::null');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNull(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNull(): int {
+        if (Obj3Null::validateNull($this->null))  {
+            return $this->null;
+        }
+        throw new Exception('never get to getNull Obj3Null::null');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNull(): int {
+        return 31; /*31:null*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj3Null::validateNull($this->null);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'null'} = $this->toNull();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj3Null
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj3Null {
+        return new Obj3Null(
+         Obj3Null::fromNull($obj->{'null'})
+        );
+    }
+
+    /**
+     * @return Obj3Null
+     */
+    public static function sample(): Obj3Null {
+        return new Obj3Null(
+         Obj3Null::sampleNull()
+        );
+    }
+}
+
+// This is an autogenerated file:ProtocolClass
+
+class ProtocolClass {
+    private int $protocol; // json:protocol Required
+
+    /**
+     * @param int $protocol
+     */
+    public function __construct(int $protocol) {
+        $this->protocol = $protocol;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromProtocol(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toProtocol(): int {
+        if (ProtocolClass::validateProtocol($this->protocol))  {
+            return $this->protocol; /*int*/
+        }
+        throw new Exception('never get to this ProtocolClass::protocol');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateProtocol(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getProtocol(): int {
+        if (ProtocolClass::validateProtocol($this->protocol))  {
+            return $this->protocol;
+        }
+        throw new Exception('never get to getProtocol ProtocolClass::protocol');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleProtocol(): int {
+        return 31; /*31:protocol*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ProtocolClass::validateProtocol($this->protocol);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'protocol'} = $this->toProtocol();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ProtocolClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ProtocolClass {
+        return new ProtocolClass(
+         ProtocolClass::fromProtocol($obj->{'protocol'})
+        );
+    }
+
+    /**
+     * @return ProtocolClass
+     */
+    public static function sample(): ProtocolClass {
+        return new ProtocolClass(
+         ProtocolClass::sampleProtocol()
+        );
+    }
+}
+
+// This is an autogenerated file:ObjectClass
+
+class ObjectClass {
+    private int $object; // json:object Required
+
+    /**
+     * @param int $object
+     */
+    public function __construct(int $object) {
+        $this->object = $object;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromObject(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toObject(): int {
+        if (ObjectClass::validateObject($this->object))  {
+            return $this->object; /*int*/
+        }
+        throw new Exception('never get to this ObjectClass::object');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObject(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getObject(): int {
+        if (ObjectClass::validateObject($this->object))  {
+            return $this->object;
+        }
+        throw new Exception('never get to getObject ObjectClass::object');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleObject(): int {
+        return 31; /*31:object*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ObjectClass::validateObject($this->object);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'object'} = $this->toObject();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ObjectClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ObjectClass {
+        return new ObjectClass(
+         ObjectClass::fromObject($obj->{'object'})
+        );
+    }
+
+    /**
+     * @return ObjectClass
+     */
+    public static function sample(): ObjectClass {
+        return new ObjectClass(
+         ObjectClass::sampleObject()
+        );
+    }
+}
+
+// This is an autogenerated file:Of
+
+class Of {
+    private int $of; // json:of Required
+
+    /**
+     * @param int $of
+     */
+    public function __construct(int $of) {
+        $this->of = $of;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOf(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOf(): int {
+        if (Of::validateOf($this->of))  {
+            return $this->of; /*int*/
+        }
+        throw new Exception('never get to this Of::of');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOf(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOf(): int {
+        if (Of::validateOf($this->of))  {
+            return $this->of;
+        }
+        throw new Exception('never get to getOf Of::of');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOf(): int {
+        return 31; /*31:of*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Of::validateOf($this->of);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'of'} = $this->toOf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Of
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Of {
+        return new Of(
+         Of::fromOf($obj->{'of'})
+        );
+    }
+
+    /**
+     * @return Of
+     */
+    public static function sample(): Of {
+        return new Of(
+         Of::sampleOf()
+        );
+    }
+}
+
+// This is an autogenerated file:Oneway
+
+class Oneway {
+    private int $oneway; // json:oneway Required
+
+    /**
+     * @param int $oneway
+     */
+    public function __construct(int $oneway) {
+        $this->oneway = $oneway;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOneway(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOneway(): int {
+        if (Oneway::validateOneway($this->oneway))  {
+            return $this->oneway; /*int*/
+        }
+        throw new Exception('never get to this Oneway::oneway');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOneway(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOneway(): int {
+        if (Oneway::validateOneway($this->oneway))  {
+            return $this->oneway;
+        }
+        throw new Exception('never get to getOneway Oneway::oneway');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOneway(): int {
+        return 31; /*31:oneway*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Oneway::validateOneway($this->oneway);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'oneway'} = $this->toOneway();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Oneway
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Oneway {
+        return new Oneway(
+         Oneway::fromOneway($obj->{'oneway'})
+        );
+    }
+
+    /**
+     * @return Oneway
+     */
+    public static function sample(): Oneway {
+        return new Oneway(
+         Oneway::sampleOneway()
+        );
+    }
+}
+
+// This is an autogenerated file:Open
+
+class Open {
+    private int $open; // json:open Required
+
+    /**
+     * @param int $open
+     */
+    public function __construct(int $open) {
+        $this->open = $open;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOpen(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOpen(): int {
+        if (Open::validateOpen($this->open))  {
+            return $this->open; /*int*/
+        }
+        throw new Exception('never get to this Open::open');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOpen(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOpen(): int {
+        if (Open::validateOpen($this->open))  {
+            return $this->open;
+        }
+        throw new Exception('never get to getOpen Open::open');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOpen(): int {
+        return 31; /*31:open*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Open::validateOpen($this->open);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'open'} = $this->toOpen();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Open
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Open {
+        return new Open(
+         Open::fromOpen($obj->{'open'})
+        );
+    }
+
+    /**
+     * @return Open
+     */
+    public static function sample(): Open {
+        return new Open(
+         Open::sampleOpen()
+        );
+    }
+}
+
+// This is an autogenerated file:Operator
+
+class Operator {
+    private int $operator; // json:operator Required
+
+    /**
+     * @param int $operator
+     */
+    public function __construct(int $operator) {
+        $this->operator = $operator;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOperator(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOperator(): int {
+        if (Operator::validateOperator($this->operator))  {
+            return $this->operator; /*int*/
+        }
+        throw new Exception('never get to this Operator::operator');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOperator(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOperator(): int {
+        if (Operator::validateOperator($this->operator))  {
+            return $this->operator;
+        }
+        throw new Exception('never get to getOperator Operator::operator');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOperator(): int {
+        return 31; /*31:operator*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Operator::validateOperator($this->operator);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'operator'} = $this->toOperator();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Operator
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Operator {
+        return new Operator(
+         Operator::fromOperator($obj->{'operator'})
+        );
+    }
+
+    /**
+     * @return Operator
+     */
+    public static function sample(): Operator {
+        return new Operator(
+         Operator::sampleOperator()
+        );
+    }
+}
+
+// This is an autogenerated file:Optional
+
+class Optional {
+    private int $optional; // json:optional Required
+
+    /**
+     * @param int $optional
+     */
+    public function __construct(int $optional) {
+        $this->optional = $optional;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOptional(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOptional(): int {
+        if (Optional::validateOptional($this->optional))  {
+            return $this->optional; /*int*/
+        }
+        throw new Exception('never get to this Optional::optional');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOptional(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOptional(): int {
+        if (Optional::validateOptional($this->optional))  {
+            return $this->optional;
+        }
+        throw new Exception('never get to getOptional Optional::optional');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOptional(): int {
+        return 31; /*31:optional*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Optional::validateOptional($this->optional);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'optional'} = $this->toOptional();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Optional
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Optional {
+        return new Optional(
+         Optional::fromOptional($obj->{'optional'})
+        );
+    }
+
+    /**
+     * @return Optional
+     */
+    public static function sample(): Optional {
+        return new Optional(
+         Optional::sampleOptional()
+        );
+    }
+}
+
+// This is an autogenerated file:OrClass
+
+class OrClass {
+    private int $or; // json:or Required
+
+    /**
+     * @param int $or
+     */
+    public function __construct(int $or) {
+        $this->or = $or;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOr(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOr(): int {
+        if (OrClass::validateOr($this->or))  {
+            return $this->or; /*int*/
+        }
+        throw new Exception('never get to this OrClass::or');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOr(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOr(): int {
+        if (OrClass::validateOr($this->or))  {
+            return $this->or;
+        }
+        throw new Exception('never get to getOr OrClass::or');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOr(): int {
+        return 31; /*31:or*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return OrClass::validateOr($this->or);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'or'} = $this->toOr();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return OrClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OrClass {
+        return new OrClass(
+         OrClass::fromOr($obj->{'or'})
+        );
+    }
+
+    /**
+     * @return OrClass
+     */
+    public static function sample(): OrClass {
+        return new OrClass(
+         OrClass::sampleOr()
+        );
+    }
+}
+
+// This is an autogenerated file:OrEq
+
+class OrEq {
+    private int $orEq; // json:or_eq Required
+
+    /**
+     * @param int $orEq
+     */
+    public function __construct(int $orEq) {
+        $this->orEq = $orEq;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOrEq(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOrEq(): int {
+        if (OrEq::validateOrEq($this->orEq))  {
+            return $this->orEq; /*int*/
+        }
+        throw new Exception('never get to this OrEq::orEq');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOrEq(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOrEq(): int {
+        if (OrEq::validateOrEq($this->orEq))  {
+            return $this->orEq;
+        }
+        throw new Exception('never get to getOrEq OrEq::orEq');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOrEq(): int {
+        return 31; /*31:orEq*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return OrEq::validateOrEq($this->orEq);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'or_eq'} = $this->toOrEq();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return OrEq
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OrEq {
+        return new OrEq(
+         OrEq::fromOrEq($obj->{'or_eq'})
+        );
+    }
+
+    /**
+     * @return OrEq
+     */
+    public static function sample(): OrEq {
+        return new OrEq(
+         OrEq::sampleOrEq()
+        );
+    }
+}
+
+// This is an autogenerated file:Out
+
+class Out {
+    private int $out; // json:out Required
+
+    /**
+     * @param int $out
+     */
+    public function __construct(int $out) {
+        $this->out = $out;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOut(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOut(): int {
+        if (Out::validateOut($this->out))  {
+            return $this->out; /*int*/
+        }
+        throw new Exception('never get to this Out::out');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOut(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOut(): int {
+        if (Out::validateOut($this->out))  {
+            return $this->out;
+        }
+        throw new Exception('never get to getOut Out::out');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOut(): int {
+        return 31; /*31:out*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Out::validateOut($this->out);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'out'} = $this->toOut();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Out
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Out {
+        return new Out(
+         Out::fromOut($obj->{'out'})
+        );
+    }
+
+    /**
+     * @return Out
+     */
+    public static function sample(): Out {
+        return new Out(
+         Out::sampleOut()
+        );
+    }
+}
+
+// This is an autogenerated file:OverrideClass
+
+class OverrideClass {
+    private int $override; // json:override Required
+
+    /**
+     * @param int $override
+     */
+    public function __construct(int $override) {
+        $this->override = $override;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOverride(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOverride(): int {
+        if (OverrideClass::validateOverride($this->override))  {
+            return $this->override; /*int*/
+        }
+        throw new Exception('never get to this OverrideClass::override');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOverride(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOverride(): int {
+        if (OverrideClass::validateOverride($this->override))  {
+            return $this->override;
+        }
+        throw new Exception('never get to getOverride OverrideClass::override');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOverride(): int {
+        return 31; /*31:override*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return OverrideClass::validateOverride($this->override);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'override'} = $this->toOverride();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return OverrideClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OverrideClass {
+        return new OverrideClass(
+         OverrideClass::fromOverride($obj->{'override'})
+        );
+    }
+
+    /**
+     * @return OverrideClass
+     */
+    public static function sample(): OverrideClass {
+        return new OverrideClass(
+         OverrideClass::sampleOverride()
+        );
+    }
+}
+
+// This is an autogenerated file:Package
+
+class Package {
+    private int $package; // json:package Required
+
+    /**
+     * @param int $package
+     */
+    public function __construct(int $package) {
+        $this->package = $package;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPackage(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPackage(): int {
+        if (Package::validatePackage($this->package))  {
+            return $this->package; /*int*/
+        }
+        throw new Exception('never get to this Package::package');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePackage(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPackage(): int {
+        if (Package::validatePackage($this->package))  {
+            return $this->package;
+        }
+        throw new Exception('never get to getPackage Package::package');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePackage(): int {
+        return 31; /*31:package*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Package::validatePackage($this->package);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'package'} = $this->toPackage();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Package
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Package {
+        return new Package(
+         Package::fromPackage($obj->{'package'})
+        );
+    }
+
+    /**
+     * @return Package
+     */
+    public static function sample(): Package {
+        return new Package(
+         Package::samplePackage()
+        );
+    }
+}
+
+// This is an autogenerated file:Params
+
+class Params {
+    private int $params; // json:params Required
+
+    /**
+     * @param int $params
+     */
+    public function __construct(int $params) {
+        $this->params = $params;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromParams(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toParams(): int {
+        if (Params::validateParams($this->params))  {
+            return $this->params; /*int*/
+        }
+        throw new Exception('never get to this Params::params');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateParams(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getParams(): int {
+        if (Params::validateParams($this->params))  {
+            return $this->params;
+        }
+        throw new Exception('never get to getParams Params::params');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleParams(): int {
+        return 31; /*31:params*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Params::validateParams($this->params);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'params'} = $this->toParams();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Params
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Params {
+        return new Params(
+         Params::fromParams($obj->{'params'})
+        );
+    }
+
+    /**
+     * @return Params
+     */
+    public static function sample(): Params {
+        return new Params(
+         Params::sampleParams()
+        );
+    }
+}
+
+// This is an autogenerated file:Pass
+
+class Pass {
+    private int $pass; // json:pass Required
+
+    /**
+     * @param int $pass
+     */
+    public function __construct(int $pass) {
+        $this->pass = $pass;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPass(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPass(): int {
+        if (Pass::validatePass($this->pass))  {
+            return $this->pass; /*int*/
+        }
+        throw new Exception('never get to this Pass::pass');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePass(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPass(): int {
+        if (Pass::validatePass($this->pass))  {
+            return $this->pass;
+        }
+        throw new Exception('never get to getPass Pass::pass');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePass(): int {
+        return 31; /*31:pass*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Pass::validatePass($this->pass);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'pass'} = $this->toPass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Pass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Pass {
+        return new Pass(
+         Pass::fromPass($obj->{'pass'})
+        );
+    }
+
+    /**
+     * @return Pass
+     */
+    public static function sample(): Pass {
+        return new Pass(
+         Pass::samplePass()
+        );
+    }
+}
+
+// This is an autogenerated file:Port
+
+class Port {
+    private int $port; // json:port Required
+
+    /**
+     * @param int $port
+     */
+    public function __construct(int $port) {
+        $this->port = $port;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPort(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPort(): int {
+        if (Port::validatePort($this->port))  {
+            return $this->port; /*int*/
+        }
+        throw new Exception('never get to this Port::port');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePort(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPort(): int {
+        if (Port::validatePort($this->port))  {
+            return $this->port;
+        }
+        throw new Exception('never get to getPort Port::port');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePort(): int {
+        return 31; /*31:port*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Port::validatePort($this->port);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'port'} = $this->toPort();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Port
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Port {
+        return new Port(
+         Port::fromPort($obj->{'port'})
+        );
+    }
+
+    /**
+     * @return Port
+     */
+    public static function sample(): Port {
+        return new Port(
+         Port::samplePort()
+        );
+    }
+}
+
+// This is an autogenerated file:Postfix
+
+class Postfix {
+    private int $postfix; // json:postfix Required
+
+    /**
+     * @param int $postfix
+     */
+    public function __construct(int $postfix) {
+        $this->postfix = $postfix;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPostfix(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPostfix(): int {
+        if (Postfix::validatePostfix($this->postfix))  {
+            return $this->postfix; /*int*/
+        }
+        throw new Exception('never get to this Postfix::postfix');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePostfix(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPostfix(): int {
+        if (Postfix::validatePostfix($this->postfix))  {
+            return $this->postfix;
+        }
+        throw new Exception('never get to getPostfix Postfix::postfix');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePostfix(): int {
+        return 31; /*31:postfix*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Postfix::validatePostfix($this->postfix);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'postfix'} = $this->toPostfix();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Postfix
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Postfix {
+        return new Postfix(
+         Postfix::fromPostfix($obj->{'postfix'})
+        );
+    }
+
+    /**
+     * @return Postfix
+     */
+    public static function sample(): Postfix {
+        return new Postfix(
+         Postfix::samplePostfix()
+        );
+    }
+}
+
+// This is an autogenerated file:Precedence
+
+class Precedence {
+    private int $precedence; // json:precedence Required
+
+    /**
+     * @param int $precedence
+     */
+    public function __construct(int $precedence) {
+        $this->precedence = $precedence;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrecedence(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrecedence(): int {
+        if (Precedence::validatePrecedence($this->precedence))  {
+            return $this->precedence; /*int*/
+        }
+        throw new Exception('never get to this Precedence::precedence');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrecedence(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrecedence(): int {
+        if (Precedence::validatePrecedence($this->precedence))  {
+            return $this->precedence;
+        }
+        throw new Exception('never get to getPrecedence Precedence::precedence');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrecedence(): int {
+        return 31; /*31:precedence*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Precedence::validatePrecedence($this->precedence);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'precedence'} = $this->toPrecedence();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Precedence
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Precedence {
+        return new Precedence(
+         Precedence::fromPrecedence($obj->{'precedence'})
+        );
+    }
+
+    /**
+     * @return Precedence
+     */
+    public static function sample(): Precedence {
+        return new Precedence(
+         Precedence::samplePrecedence()
+        );
+    }
+}
+
+// This is an autogenerated file:Prefix
+
+class Prefix {
+    private int $prefix; // json:prefix Required
+
+    /**
+     * @param int $prefix
+     */
+    public function __construct(int $prefix) {
+        $this->prefix = $prefix;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrefix(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrefix(): int {
+        if (Prefix::validatePrefix($this->prefix))  {
+            return $this->prefix; /*int*/
+        }
+        throw new Exception('never get to this Prefix::prefix');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrefix(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrefix(): int {
+        if (Prefix::validatePrefix($this->prefix))  {
+            return $this->prefix;
+        }
+        throw new Exception('never get to getPrefix Prefix::prefix');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrefix(): int {
+        return 31; /*31:prefix*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Prefix::validatePrefix($this->prefix);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'prefix'} = $this->toPrefix();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Prefix
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Prefix {
+        return new Prefix(
+         Prefix::fromPrefix($obj->{'prefix'})
+        );
+    }
+
+    /**
+     * @return Prefix
+     */
+    public static function sample(): Prefix {
+        return new Prefix(
+         Prefix::samplePrefix()
+        );
+    }
+}
+
+// This is an autogenerated file:PrintClass
+
+class PrintClass {
+    private int $print; // json:print Required
+
+    /**
+     * @param int $print
+     */
+    public function __construct(int $print) {
+        $this->print = $print;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrint(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrint(): int {
+        if (PrintClass::validatePrint($this->print))  {
+            return $this->print; /*int*/
+        }
+        throw new Exception('never get to this PrintClass::print');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrint(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrint(): int {
+        if (PrintClass::validatePrint($this->print))  {
+            return $this->print;
+        }
+        throw new Exception('never get to getPrint PrintClass::print');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrint(): int {
+        return 31; /*31:print*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return PrintClass::validatePrint($this->print);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'print'} = $this->toPrint();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return PrintClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): PrintClass {
+        return new PrintClass(
+         PrintClass::fromPrint($obj->{'print'})
+        );
+    }
+
+    /**
+     * @return PrintClass
+     */
+    public static function sample(): PrintClass {
+        return new PrintClass(
+         PrintClass::samplePrint()
+        );
+    }
+}
+
+// This is an autogenerated file:PrintMembers
+
+class PrintMembers {
+    private int $printMembers; // json:printMembers Required
+
+    /**
+     * @param int $printMembers
+     */
+    public function __construct(int $printMembers) {
+        $this->printMembers = $printMembers;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrintMembers(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrintMembers(): int {
+        if (PrintMembers::validatePrintMembers($this->printMembers))  {
+            return $this->printMembers; /*int*/
+        }
+        throw new Exception('never get to this PrintMembers::printMembers');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrintMembers(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrintMembers(): int {
+        if (PrintMembers::validatePrintMembers($this->printMembers))  {
+            return $this->printMembers;
+        }
+        throw new Exception('never get to getPrintMembers PrintMembers::printMembers');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrintMembers(): int {
+        return 31; /*31:printMembers*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return PrintMembers::validatePrintMembers($this->printMembers);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'printMembers'} = $this->toPrintMembers();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return PrintMembers
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): PrintMembers {
+        return new PrintMembers(
+         PrintMembers::fromPrintMembers($obj->{'printMembers'})
+        );
+    }
+
+    /**
+     * @return PrintMembers
+     */
+    public static function sample(): PrintMembers {
+        return new PrintMembers(
+         PrintMembers::samplePrintMembers()
+        );
+    }
+}
+
+// This is an autogenerated file:Printf
+
+class Printf {
+    private int $printf; // json:printf Required
+
+    /**
+     * @param int $printf
+     */
+    public function __construct(int $printf) {
+        $this->printf = $printf;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrintf(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrintf(): int {
+        if (Printf::validatePrintf($this->printf))  {
+            return $this->printf; /*int*/
+        }
+        throw new Exception('never get to this Printf::printf');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrintf(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrintf(): int {
+        if (Printf::validatePrintf($this->printf))  {
+            return $this->printf;
+        }
+        throw new Exception('never get to getPrintf Printf::printf');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrintf(): int {
+        return 31; /*31:printf*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Printf::validatePrintf($this->printf);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'printf'} = $this->toPrintf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Printf
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Printf {
+        return new Printf(
+         Printf::fromPrintf($obj->{'printf'})
+        );
+    }
+
+    /**
+     * @return Printf
+     */
+    public static function sample(): Printf {
+        return new Printf(
+         Printf::samplePrintf()
+        );
+    }
+}
+
+// This is an autogenerated file:PrivateClass
+
+class PrivateClass {
+    private int $private; // json:private Required
+
+    /**
+     * @param int $private
+     */
+    public function __construct(int $private) {
+        $this->private = $private;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrivate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrivate(): int {
+        if (PrivateClass::validatePrivate($this->private))  {
+            return $this->private; /*int*/
+        }
+        throw new Exception('never get to this PrivateClass::private');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrivate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrivate(): int {
+        if (PrivateClass::validatePrivate($this->private))  {
+            return $this->private;
+        }
+        throw new Exception('never get to getPrivate PrivateClass::private');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrivate(): int {
+        return 31; /*31:private*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return PrivateClass::validatePrivate($this->private);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'private'} = $this->toPrivate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return PrivateClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): PrivateClass {
+        return new PrivateClass(
+         PrivateClass::fromPrivate($obj->{'private'})
+        );
+    }
+
+    /**
+     * @return PrivateClass
+     */
+    public static function sample(): PrivateClass {
+        return new PrivateClass(
+         PrivateClass::samplePrivate()
+        );
+    }
+}
+
+// This is an autogenerated file:ProtectedClass
+
+class ProtectedClass {
+    private int $protected; // json:protected Required
+
+    /**
+     * @param int $protected
+     */
+    public function __construct(int $protected) {
+        $this->protected = $protected;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromProtected(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toProtected(): int {
+        if (ProtectedClass::validateProtected($this->protected))  {
+            return $this->protected; /*int*/
+        }
+        throw new Exception('never get to this ProtectedClass::protected');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateProtected(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getProtected(): int {
+        if (ProtectedClass::validateProtected($this->protected))  {
+            return $this->protected;
+        }
+        throw new Exception('never get to getProtected ProtectedClass::protected');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleProtected(): int {
+        return 31; /*31:protected*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ProtectedClass::validateProtected($this->protected);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'protected'} = $this->toProtected();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ProtectedClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ProtectedClass {
+        return new ProtectedClass(
+         ProtectedClass::fromProtected($obj->{'protected'})
+        );
+    }
+
+    /**
+     * @return ProtectedClass
+     */
+    public static function sample(): ProtectedClass {
+        return new ProtectedClass(
+         ProtectedClass::sampleProtected()
+        );
+    }
+}
+
+// This is an autogenerated file:Protocol
+
+class Protocol {
+    private int $protocol; // json:Protocol Required
+
+    /**
+     * @param int $protocol
+     */
+    public function __construct(int $protocol) {
+        $this->protocol = $protocol;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromProtocol(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toProtocol(): int {
+        if (Protocol::validateProtocol($this->protocol))  {
+            return $this->protocol; /*int*/
+        }
+        throw new Exception('never get to this Protocol::protocol');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateProtocol(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getProtocol(): int {
+        if (Protocol::validateProtocol($this->protocol))  {
+            return $this->protocol;
+        }
+        throw new Exception('never get to getProtocol Protocol::protocol');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleProtocol(): int {
+        return 31; /*31:protocol*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Protocol::validateProtocol($this->protocol);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Protocol'} = $this->toProtocol();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Protocol
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Protocol {
+        return new Protocol(
+         Protocol::fromProtocol($obj->{'Protocol'})
+        );
+    }
+
+    /**
+     * @return Protocol
+     */
+    public static function sample(): Protocol {
+        return new Protocol(
+         Protocol::sampleProtocol()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj4
+
+class Obj4 {
+    private int $dummy; // json:dummy Required
+    private Obj4Self $obj4Self; // json:self Required
+    private This $obj4This; // json:this Required
+    private Obj4True $obj4True; // json:true Required
+    private TypeClass $obj4Type; // json:type Required
+    private PublicClass $public; // json:public Required
+    private Quicktype $quicktype; // json:quicktype Required
+    private Raise $raise; // json:raise Required
+    private Range $range; // json:range Required
+    private ReadonlyClass $readonly; // json:readonly Required
+    private Ref $ref; // json:ref Required
+    private Register $register; // json:register Required
+    private ReinterpretCast $reinterpretCast; // json:reinterpret_cast Required
+    private Repeat $repeat; // json:repeat Required
+    private RequireClass $require; // json:require Required
+    private Required $required; // json:required Required
+    private Requires $requires; // json:requires Required
+    private Restrict $restrict; // json:restrict Required
+    private Retain $retain; // json:retain Required
+    private Rethrows $rethrows; // json:rethrows Required
+    private ReturnClass $return; // json:return Required
+    private Right $right; // json:right Required
+    private Sbyte $sbyte; // json:sbyte Required
+    private Sealed $sealed; // json:sealed Required
+    private Sel $sel; // json:SEL Required
+    private Select $select; // json:select Required
+    private SelfClass $self; // json:Self Required
+    private Serialize $serialize; // json:serialize Required
+    private Set $set; // json:set Required
+    private Short $short; // json:short Required
+    private Signed $signed; // json:signed Required
+    private Sizeof $sizeof; // json:sizeof Required
+    private Stackalloc $stackalloc; // json:stackalloc Required
+    private StaticClass $static; // json:static Required
+    private StaticAssert $staticAssert; // json:static_assert Required
+    private StaticCast $staticCast; // json:static_cast Required
+    private Strictfp $strictfp; // json:strictfp Required
+    private StringClass $string; // json:string Required
+    private Struct $struct; // json:struct Required
+    private Subscript $subscript; // json:subscript Required
+    private Super $super; // json:super Required
+    private SwitchClass $switch; // json:switch Required
+    private Symbol $symbol; // json:symbol Required
+    private Synchronized $synchronized; // json:synchronized Required
+    private System $system; // json:system Required
+    private Template $template; // json:template Required
+    private Then $then; // json:then Required
+    private ThreadLocal $threadLocal; // json:thread_local Required
+    private ThrowClass $throw; // json:throw Required
+    private Throws $throws; // json:throws Required
+    private ToJSON $toJSON; // json:to_json Required
+    private TopLevelClass $topLevel; // json:top_level Required
+    private Transient $transient; // json:transient Required
+    private TrueClass $true; // json:True Required
+    private TryClass $try; // json:try Required
+    private Type $type; // json:Type Required
+    private Typealias $typealias; // json:typealias Required
+    private Typedef $typedef; // json:typedef Required
+    private Typeid $typeid; // json:typeid Required
+    private Typename $typename; // json:typename Required
+    private Typeof $typeof; // json:typeof Required
+    private Uint $uint; // json:uint Required
+    private Ulong $ulong; // json:ulong Required
+    private Unchecked $unchecked; // json:unchecked Required
+    private Undefined $undefined; // json:undefined Required
+
+    /**
+     * @param int $dummy
+     * @param Obj4Self $obj4Self
+     * @param This $obj4This
+     * @param Obj4True $obj4True
+     * @param TypeClass $obj4Type
+     * @param PublicClass $public
+     * @param Quicktype $quicktype
+     * @param Raise $raise
+     * @param Range $range
+     * @param ReadonlyClass $readonly
+     * @param Ref $ref
+     * @param Register $register
+     * @param ReinterpretCast $reinterpretCast
+     * @param Repeat $repeat
+     * @param RequireClass $require
+     * @param Required $required
+     * @param Requires $requires
+     * @param Restrict $restrict
+     * @param Retain $retain
+     * @param Rethrows $rethrows
+     * @param ReturnClass $return
+     * @param Right $right
+     * @param Sbyte $sbyte
+     * @param Sealed $sealed
+     * @param Sel $sel
+     * @param Select $select
+     * @param SelfClass $self
+     * @param Serialize $serialize
+     * @param Set $set
+     * @param Short $short
+     * @param Signed $signed
+     * @param Sizeof $sizeof
+     * @param Stackalloc $stackalloc
+     * @param StaticClass $static
+     * @param StaticAssert $staticAssert
+     * @param StaticCast $staticCast
+     * @param Strictfp $strictfp
+     * @param StringClass $string
+     * @param Struct $struct
+     * @param Subscript $subscript
+     * @param Super $super
+     * @param SwitchClass $switch
+     * @param Symbol $symbol
+     * @param Synchronized $synchronized
+     * @param System $system
+     * @param Template $template
+     * @param Then $then
+     * @param ThreadLocal $threadLocal
+     * @param ThrowClass $throw
+     * @param Throws $throws
+     * @param ToJSON $toJSON
+     * @param TopLevelClass $topLevel
+     * @param Transient $transient
+     * @param TrueClass $true
+     * @param TryClass $try
+     * @param Type $type
+     * @param Typealias $typealias
+     * @param Typedef $typedef
+     * @param Typeid $typeid
+     * @param Typename $typename
+     * @param Typeof $typeof
+     * @param Uint $uint
+     * @param Ulong $ulong
+     * @param Unchecked $unchecked
+     * @param Undefined $undefined
+     */
+    public function __construct(int $dummy, Obj4Self $obj4Self, This $obj4This, Obj4True $obj4True, TypeClass $obj4Type, PublicClass $public, Quicktype $quicktype, Raise $raise, Range $range, ReadonlyClass $readonly, Ref $ref, Register $register, ReinterpretCast $reinterpretCast, Repeat $repeat, RequireClass $require, Required $required, Requires $requires, Restrict $restrict, Retain $retain, Rethrows $rethrows, ReturnClass $return, Right $right, Sbyte $sbyte, Sealed $sealed, Sel $sel, Select $select, SelfClass $self, Serialize $serialize, Set $set, Short $short, Signed $signed, Sizeof $sizeof, Stackalloc $stackalloc, StaticClass $static, StaticAssert $staticAssert, StaticCast $staticCast, 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, ToJSON $toJSON, 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) {
+        $this->dummy = $dummy;
+        $this->obj4Self = $obj4Self;
+        $this->obj4This = $obj4This;
+        $this->obj4True = $obj4True;
+        $this->obj4Type = $obj4Type;
+        $this->public = $public;
+        $this->quicktype = $quicktype;
+        $this->raise = $raise;
+        $this->range = $range;
+        $this->readonly = $readonly;
+        $this->ref = $ref;
+        $this->register = $register;
+        $this->reinterpretCast = $reinterpretCast;
+        $this->repeat = $repeat;
+        $this->require = $require;
+        $this->required = $required;
+        $this->requires = $requires;
+        $this->restrict = $restrict;
+        $this->retain = $retain;
+        $this->rethrows = $rethrows;
+        $this->return = $return;
+        $this->right = $right;
+        $this->sbyte = $sbyte;
+        $this->sealed = $sealed;
+        $this->sel = $sel;
+        $this->select = $select;
+        $this->self = $self;
+        $this->serialize = $serialize;
+        $this->set = $set;
+        $this->short = $short;
+        $this->signed = $signed;
+        $this->sizeof = $sizeof;
+        $this->stackalloc = $stackalloc;
+        $this->static = $static;
+        $this->staticAssert = $staticAssert;
+        $this->staticCast = $staticCast;
+        $this->strictfp = $strictfp;
+        $this->string = $string;
+        $this->struct = $struct;
+        $this->subscript = $subscript;
+        $this->super = $super;
+        $this->switch = $switch;
+        $this->symbol = $symbol;
+        $this->synchronized = $synchronized;
+        $this->system = $system;
+        $this->template = $template;
+        $this->then = $then;
+        $this->threadLocal = $threadLocal;
+        $this->throw = $throw;
+        $this->throws = $throws;
+        $this->toJSON = $toJSON;
+        $this->topLevel = $topLevel;
+        $this->transient = $transient;
+        $this->true = $true;
+        $this->try = $try;
+        $this->type = $type;
+        $this->typealias = $typealias;
+        $this->typedef = $typedef;
+        $this->typeid = $typeid;
+        $this->typename = $typename;
+        $this->typeof = $typeof;
+        $this->uint = $uint;
+        $this->ulong = $ulong;
+        $this->unchecked = $unchecked;
+        $this->undefined = $undefined;
+    }
+
+    /**
+     * @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 (Obj4::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this Obj4::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 (Obj4::validateDummy($this->dummy))  {
+            return $this->dummy;
+        }
+        throw new Exception('never get to getDummy Obj4::dummy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj4Self
+     */
+    public static function fromObj4Self(stdClass $value): Obj4Self {
+        return Obj4Self::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj4Self(): stdClass {
+        if (Obj4::validateObj4Self($this->obj4Self))  {
+            return $this->obj4Self->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::obj4Self');
+    }
+
+    /**
+     * @param Obj4Self
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj4Self(Obj4Self $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj4Self
+     */
+    public function getObj4Self(): Obj4Self {
+        if (Obj4::validateObj4Self($this->obj4Self))  {
+            return $this->obj4Self;
+        }
+        throw new Exception('never get to getObj4Self Obj4::obj4Self');
+    }
+
+    /**
+     * @return Obj4Self
+     */
+    public static function sampleObj4Self(): Obj4Self {
+        return Obj4Self::sample(); /*32:obj4Self*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return This
+     */
+    public static function fromObj4This(stdClass $value): This {
+        return This::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj4This(): stdClass {
+        if (Obj4::validateObj4This($this->obj4This))  {
+            return $this->obj4This->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::obj4This');
+    }
+
+    /**
+     * @param This
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj4This(This $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return This
+     */
+    public function getObj4This(): This {
+        if (Obj4::validateObj4This($this->obj4This))  {
+            return $this->obj4This;
+        }
+        throw new Exception('never get to getObj4This Obj4::obj4This');
+    }
+
+    /**
+     * @return This
+     */
+    public static function sampleObj4This(): This {
+        return This::sample(); /*33:obj4This*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Obj4True
+     */
+    public static function fromObj4True(stdClass $value): Obj4True {
+        return Obj4True::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj4True(): stdClass {
+        if (Obj4::validateObj4True($this->obj4True))  {
+            return $this->obj4True->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::obj4True');
+    }
+
+    /**
+     * @param Obj4True
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj4True(Obj4True $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Obj4True
+     */
+    public function getObj4True(): Obj4True {
+        if (Obj4::validateObj4True($this->obj4True))  {
+            return $this->obj4True;
+        }
+        throw new Exception('never get to getObj4True Obj4::obj4True');
+    }
+
+    /**
+     * @return Obj4True
+     */
+    public static function sampleObj4True(): Obj4True {
+        return Obj4True::sample(); /*34:obj4True*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return TypeClass
+     */
+    public static function fromObj4Type(stdClass $value): TypeClass {
+        return TypeClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toObj4Type(): stdClass {
+        if (Obj4::validateObj4Type($this->obj4Type))  {
+            return $this->obj4Type->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::obj4Type');
+    }
+
+    /**
+     * @param TypeClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObj4Type(TypeClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return TypeClass
+     */
+    public function getObj4Type(): TypeClass {
+        if (Obj4::validateObj4Type($this->obj4Type))  {
+            return $this->obj4Type;
+        }
+        throw new Exception('never get to getObj4Type Obj4::obj4Type');
+    }
+
+    /**
+     * @return TypeClass
+     */
+    public static function sampleObj4Type(): TypeClass {
+        return TypeClass::sample(); /*35:obj4Type*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return PublicClass
+     */
+    public static function fromPublic(stdClass $value): PublicClass {
+        return PublicClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPublic(): stdClass {
+        if (Obj4::validatePublic($this->public))  {
+            return $this->public->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::public');
+    }
+
+    /**
+     * @param PublicClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePublic(PublicClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return PublicClass
+     */
+    public function getPublic(): PublicClass {
+        if (Obj4::validatePublic($this->public))  {
+            return $this->public;
+        }
+        throw new Exception('never get to getPublic Obj4::public');
+    }
+
+    /**
+     * @return PublicClass
+     */
+    public static function samplePublic(): PublicClass {
+        return PublicClass::sample(); /*36:public*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Quicktype
+     */
+    public static function fromQuicktype(stdClass $value): Quicktype {
+        return Quicktype::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toQuicktype(): stdClass {
+        if (Obj4::validateQuicktype($this->quicktype))  {
+            return $this->quicktype->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::quicktype');
+    }
+
+    /**
+     * @param Quicktype
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateQuicktype(Quicktype $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Quicktype
+     */
+    public function getQuicktype(): Quicktype {
+        if (Obj4::validateQuicktype($this->quicktype))  {
+            return $this->quicktype;
+        }
+        throw new Exception('never get to getQuicktype Obj4::quicktype');
+    }
+
+    /**
+     * @return Quicktype
+     */
+    public static function sampleQuicktype(): Quicktype {
+        return Quicktype::sample(); /*37:quicktype*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Raise
+     */
+    public static function fromRaise(stdClass $value): Raise {
+        return Raise::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRaise(): stdClass {
+        if (Obj4::validateRaise($this->raise))  {
+            return $this->raise->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::raise');
+    }
+
+    /**
+     * @param Raise
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRaise(Raise $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Raise
+     */
+    public function getRaise(): Raise {
+        if (Obj4::validateRaise($this->raise))  {
+            return $this->raise;
+        }
+        throw new Exception('never get to getRaise Obj4::raise');
+    }
+
+    /**
+     * @return Raise
+     */
+    public static function sampleRaise(): Raise {
+        return Raise::sample(); /*38:raise*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Range
+     */
+    public static function fromRange(stdClass $value): Range {
+        return Range::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRange(): stdClass {
+        if (Obj4::validateRange($this->range))  {
+            return $this->range->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::range');
+    }
+
+    /**
+     * @param Range
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRange(Range $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Range
+     */
+    public function getRange(): Range {
+        if (Obj4::validateRange($this->range))  {
+            return $this->range;
+        }
+        throw new Exception('never get to getRange Obj4::range');
+    }
+
+    /**
+     * @return Range
+     */
+    public static function sampleRange(): Range {
+        return Range::sample(); /*39:range*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ReadonlyClass
+     */
+    public static function fromReadonly(stdClass $value): ReadonlyClass {
+        return ReadonlyClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toReadonly(): stdClass {
+        if (Obj4::validateReadonly($this->readonly))  {
+            return $this->readonly->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::readonly');
+    }
+
+    /**
+     * @param ReadonlyClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReadonly(ReadonlyClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ReadonlyClass
+     */
+    public function getReadonly(): ReadonlyClass {
+        if (Obj4::validateReadonly($this->readonly))  {
+            return $this->readonly;
+        }
+        throw new Exception('never get to getReadonly Obj4::readonly');
+    }
+
+    /**
+     * @return ReadonlyClass
+     */
+    public static function sampleReadonly(): ReadonlyClass {
+        return ReadonlyClass::sample(); /*40:readonly*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Ref
+     */
+    public static function fromRef(stdClass $value): Ref {
+        return Ref::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRef(): stdClass {
+        if (Obj4::validateRef($this->ref))  {
+            return $this->ref->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::ref');
+    }
+
+    /**
+     * @param Ref
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRef(Ref $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Ref
+     */
+    public function getRef(): Ref {
+        if (Obj4::validateRef($this->ref))  {
+            return $this->ref;
+        }
+        throw new Exception('never get to getRef Obj4::ref');
+    }
+
+    /**
+     * @return Ref
+     */
+    public static function sampleRef(): Ref {
+        return Ref::sample(); /*41:ref*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Register
+     */
+    public static function fromRegister(stdClass $value): Register {
+        return Register::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRegister(): stdClass {
+        if (Obj4::validateRegister($this->register))  {
+            return $this->register->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::register');
+    }
+
+    /**
+     * @param Register
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRegister(Register $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Register
+     */
+    public function getRegister(): Register {
+        if (Obj4::validateRegister($this->register))  {
+            return $this->register;
+        }
+        throw new Exception('never get to getRegister Obj4::register');
+    }
+
+    /**
+     * @return Register
+     */
+    public static function sampleRegister(): Register {
+        return Register::sample(); /*42:register*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ReinterpretCast
+     */
+    public static function fromReinterpretCast(stdClass $value): ReinterpretCast {
+        return ReinterpretCast::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toReinterpretCast(): stdClass {
+        if (Obj4::validateReinterpretCast($this->reinterpretCast))  {
+            return $this->reinterpretCast->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::reinterpretCast');
+    }
+
+    /**
+     * @param ReinterpretCast
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReinterpretCast(ReinterpretCast $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ReinterpretCast
+     */
+    public function getReinterpretCast(): ReinterpretCast {
+        if (Obj4::validateReinterpretCast($this->reinterpretCast))  {
+            return $this->reinterpretCast;
+        }
+        throw new Exception('never get to getReinterpretCast Obj4::reinterpretCast');
+    }
+
+    /**
+     * @return ReinterpretCast
+     */
+    public static function sampleReinterpretCast(): ReinterpretCast {
+        return ReinterpretCast::sample(); /*43:reinterpretCast*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Repeat
+     */
+    public static function fromRepeat(stdClass $value): Repeat {
+        return Repeat::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRepeat(): stdClass {
+        if (Obj4::validateRepeat($this->repeat))  {
+            return $this->repeat->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::repeat');
+    }
+
+    /**
+     * @param Repeat
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRepeat(Repeat $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Repeat
+     */
+    public function getRepeat(): Repeat {
+        if (Obj4::validateRepeat($this->repeat))  {
+            return $this->repeat;
+        }
+        throw new Exception('never get to getRepeat Obj4::repeat');
+    }
+
+    /**
+     * @return Repeat
+     */
+    public static function sampleRepeat(): Repeat {
+        return Repeat::sample(); /*44:repeat*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return RequireClass
+     */
+    public static function fromRequire(stdClass $value): RequireClass {
+        return RequireClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRequire(): stdClass {
+        if (Obj4::validateRequire($this->require))  {
+            return $this->require->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::require');
+    }
+
+    /**
+     * @param RequireClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRequire(RequireClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return RequireClass
+     */
+    public function getRequire(): RequireClass {
+        if (Obj4::validateRequire($this->require))  {
+            return $this->require;
+        }
+        throw new Exception('never get to getRequire Obj4::require');
+    }
+
+    /**
+     * @return RequireClass
+     */
+    public static function sampleRequire(): RequireClass {
+        return RequireClass::sample(); /*45:require*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Required
+     */
+    public static function fromRequired(stdClass $value): Required {
+        return Required::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRequired(): stdClass {
+        if (Obj4::validateRequired($this->required))  {
+            return $this->required->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::required');
+    }
+
+    /**
+     * @param Required
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRequired(Required $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Required
+     */
+    public function getRequired(): Required {
+        if (Obj4::validateRequired($this->required))  {
+            return $this->required;
+        }
+        throw new Exception('never get to getRequired Obj4::required');
+    }
+
+    /**
+     * @return Required
+     */
+    public static function sampleRequired(): Required {
+        return Required::sample(); /*46:required*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Requires
+     */
+    public static function fromRequires(stdClass $value): Requires {
+        return Requires::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRequires(): stdClass {
+        if (Obj4::validateRequires($this->requires))  {
+            return $this->requires->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::requires');
+    }
+
+    /**
+     * @param Requires
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRequires(Requires $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Requires
+     */
+    public function getRequires(): Requires {
+        if (Obj4::validateRequires($this->requires))  {
+            return $this->requires;
+        }
+        throw new Exception('never get to getRequires Obj4::requires');
+    }
+
+    /**
+     * @return Requires
+     */
+    public static function sampleRequires(): Requires {
+        return Requires::sample(); /*47:requires*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Restrict
+     */
+    public static function fromRestrict(stdClass $value): Restrict {
+        return Restrict::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRestrict(): stdClass {
+        if (Obj4::validateRestrict($this->restrict))  {
+            return $this->restrict->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::restrict');
+    }
+
+    /**
+     * @param Restrict
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRestrict(Restrict $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Restrict
+     */
+    public function getRestrict(): Restrict {
+        if (Obj4::validateRestrict($this->restrict))  {
+            return $this->restrict;
+        }
+        throw new Exception('never get to getRestrict Obj4::restrict');
+    }
+
+    /**
+     * @return Restrict
+     */
+    public static function sampleRestrict(): Restrict {
+        return Restrict::sample(); /*48:restrict*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Retain
+     */
+    public static function fromRetain(stdClass $value): Retain {
+        return Retain::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRetain(): stdClass {
+        if (Obj4::validateRetain($this->retain))  {
+            return $this->retain->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::retain');
+    }
+
+    /**
+     * @param Retain
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRetain(Retain $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Retain
+     */
+    public function getRetain(): Retain {
+        if (Obj4::validateRetain($this->retain))  {
+            return $this->retain;
+        }
+        throw new Exception('never get to getRetain Obj4::retain');
+    }
+
+    /**
+     * @return Retain
+     */
+    public static function sampleRetain(): Retain {
+        return Retain::sample(); /*49:retain*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Rethrows
+     */
+    public static function fromRethrows(stdClass $value): Rethrows {
+        return Rethrows::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRethrows(): stdClass {
+        if (Obj4::validateRethrows($this->rethrows))  {
+            return $this->rethrows->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::rethrows');
+    }
+
+    /**
+     * @param Rethrows
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRethrows(Rethrows $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Rethrows
+     */
+    public function getRethrows(): Rethrows {
+        if (Obj4::validateRethrows($this->rethrows))  {
+            return $this->rethrows;
+        }
+        throw new Exception('never get to getRethrows Obj4::rethrows');
+    }
+
+    /**
+     * @return Rethrows
+     */
+    public static function sampleRethrows(): Rethrows {
+        return Rethrows::sample(); /*50:rethrows*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ReturnClass
+     */
+    public static function fromReturn(stdClass $value): ReturnClass {
+        return ReturnClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toReturn(): stdClass {
+        if (Obj4::validateReturn($this->return))  {
+            return $this->return->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::return');
+    }
+
+    /**
+     * @param ReturnClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReturn(ReturnClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ReturnClass
+     */
+    public function getReturn(): ReturnClass {
+        if (Obj4::validateReturn($this->return))  {
+            return $this->return;
+        }
+        throw new Exception('never get to getReturn Obj4::return');
+    }
+
+    /**
+     * @return ReturnClass
+     */
+    public static function sampleReturn(): ReturnClass {
+        return ReturnClass::sample(); /*51:return*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Right
+     */
+    public static function fromRight(stdClass $value): Right {
+        return Right::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRight(): stdClass {
+        if (Obj4::validateRight($this->right))  {
+            return $this->right->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::right');
+    }
+
+    /**
+     * @param Right
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRight(Right $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Right
+     */
+    public function getRight(): Right {
+        if (Obj4::validateRight($this->right))  {
+            return $this->right;
+        }
+        throw new Exception('never get to getRight Obj4::right');
+    }
+
+    /**
+     * @return Right
+     */
+    public static function sampleRight(): Right {
+        return Right::sample(); /*52:right*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Sbyte
+     */
+    public static function fromSbyte(stdClass $value): Sbyte {
+        return Sbyte::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSbyte(): stdClass {
+        if (Obj4::validateSbyte($this->sbyte))  {
+            return $this->sbyte->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::sbyte');
+    }
+
+    /**
+     * @param Sbyte
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSbyte(Sbyte $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Sbyte
+     */
+    public function getSbyte(): Sbyte {
+        if (Obj4::validateSbyte($this->sbyte))  {
+            return $this->sbyte;
+        }
+        throw new Exception('never get to getSbyte Obj4::sbyte');
+    }
+
+    /**
+     * @return Sbyte
+     */
+    public static function sampleSbyte(): Sbyte {
+        return Sbyte::sample(); /*53: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(); /*54: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(); /*55:sel*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Select
+     */
+    public static function fromSelect(stdClass $value): Select {
+        return Select::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSelect(): stdClass {
+        if (Obj4::validateSelect($this->select))  {
+            return $this->select->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::select');
+    }
+
+    /**
+     * @param Select
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelect(Select $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Select
+     */
+    public function getSelect(): Select {
+        if (Obj4::validateSelect($this->select))  {
+            return $this->select;
+        }
+        throw new Exception('never get to getSelect Obj4::select');
+    }
+
+    /**
+     * @return Select
+     */
+    public static function sampleSelect(): Select {
+        return Select::sample(); /*56:select*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return SelfClass
+     */
+    public static function fromSelf(stdClass $value): SelfClass {
+        return SelfClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSelf(): stdClass {
+        if (Obj4::validateSelf($this->self))  {
+            return $this->self->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::self');
+    }
+
+    /**
+     * @param SelfClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelf(SelfClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SelfClass
+     */
+    public function getSelf(): SelfClass {
+        if (Obj4::validateSelf($this->self))  {
+            return $this->self;
+        }
+        throw new Exception('never get to getSelf Obj4::self');
+    }
+
+    /**
+     * @return SelfClass
+     */
+    public static function sampleSelf(): SelfClass {
+        return SelfClass::sample(); /*57:self*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Serialize
+     */
+    public static function fromSerialize(stdClass $value): Serialize {
+        return Serialize::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSerialize(): stdClass {
+        if (Obj4::validateSerialize($this->serialize))  {
+            return $this->serialize->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::serialize');
+    }
+
+    /**
+     * @param Serialize
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialize(Serialize $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Serialize
+     */
+    public function getSerialize(): Serialize {
+        if (Obj4::validateSerialize($this->serialize))  {
+            return $this->serialize;
+        }
+        throw new Exception('never get to getSerialize Obj4::serialize');
+    }
+
+    /**
+     * @return Serialize
+     */
+    public static function sampleSerialize(): Serialize {
+        return Serialize::sample(); /*58:serialize*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Set
+     */
+    public static function fromSet(stdClass $value): Set {
+        return Set::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSet(): stdClass {
+        if (Obj4::validateSet($this->set))  {
+            return $this->set->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::set');
+    }
+
+    /**
+     * @param Set
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSet(Set $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Set
+     */
+    public function getSet(): Set {
+        if (Obj4::validateSet($this->set))  {
+            return $this->set;
+        }
+        throw new Exception('never get to getSet Obj4::set');
+    }
+
+    /**
+     * @return Set
+     */
+    public static function sampleSet(): Set {
+        return Set::sample(); /*59:set*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Short
+     */
+    public static function fromShort(stdClass $value): Short {
+        return Short::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toShort(): stdClass {
+        if (Obj4::validateShort($this->short))  {
+            return $this->short->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::short');
+    }
+
+    /**
+     * @param Short
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateShort(Short $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Short
+     */
+    public function getShort(): Short {
+        if (Obj4::validateShort($this->short))  {
+            return $this->short;
+        }
+        throw new Exception('never get to getShort Obj4::short');
+    }
+
+    /**
+     * @return Short
+     */
+    public static function sampleShort(): Short {
+        return Short::sample(); /*60:short*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Signed
+     */
+    public static function fromSigned(stdClass $value): Signed {
+        return Signed::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSigned(): stdClass {
+        if (Obj4::validateSigned($this->signed))  {
+            return $this->signed->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::signed');
+    }
+
+    /**
+     * @param Signed
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSigned(Signed $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Signed
+     */
+    public function getSigned(): Signed {
+        if (Obj4::validateSigned($this->signed))  {
+            return $this->signed;
+        }
+        throw new Exception('never get to getSigned Obj4::signed');
+    }
+
+    /**
+     * @return Signed
+     */
+    public static function sampleSigned(): Signed {
+        return Signed::sample(); /*61:signed*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Sizeof
+     */
+    public static function fromSizeof(stdClass $value): Sizeof {
+        return Sizeof::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSizeof(): stdClass {
+        if (Obj4::validateSizeof($this->sizeof))  {
+            return $this->sizeof->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::sizeof');
+    }
+
+    /**
+     * @param Sizeof
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSizeof(Sizeof $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Sizeof
+     */
+    public function getSizeof(): Sizeof {
+        if (Obj4::validateSizeof($this->sizeof))  {
+            return $this->sizeof;
+        }
+        throw new Exception('never get to getSizeof Obj4::sizeof');
+    }
+
+    /**
+     * @return Sizeof
+     */
+    public static function sampleSizeof(): Sizeof {
+        return Sizeof::sample(); /*62:sizeof*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Stackalloc
+     */
+    public static function fromStackalloc(stdClass $value): Stackalloc {
+        return Stackalloc::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStackalloc(): stdClass {
+        if (Obj4::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::stackalloc');
+    }
+
+    /**
+     * @param Stackalloc
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStackalloc(Stackalloc $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Stackalloc
+     */
+    public function getStackalloc(): Stackalloc {
+        if (Obj4::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc;
+        }
+        throw new Exception('never get to getStackalloc Obj4::stackalloc');
+    }
+
+    /**
+     * @return Stackalloc
+     */
+    public static function sampleStackalloc(): Stackalloc {
+        return Stackalloc::sample(); /*63:stackalloc*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return StaticClass
+     */
+    public static function fromStatic(stdClass $value): StaticClass {
+        return StaticClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStatic(): stdClass {
+        if (Obj4::validateStatic($this->static))  {
+            return $this->static->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::static');
+    }
+
+    /**
+     * @param StaticClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStatic(StaticClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return StaticClass
+     */
+    public function getStatic(): StaticClass {
+        if (Obj4::validateStatic($this->static))  {
+            return $this->static;
+        }
+        throw new Exception('never get to getStatic Obj4::static');
+    }
+
+    /**
+     * @return StaticClass
+     */
+    public static function sampleStatic(): StaticClass {
+        return StaticClass::sample(); /*64:static*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return StaticAssert
+     */
+    public static function fromStaticAssert(stdClass $value): StaticAssert {
+        return StaticAssert::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStaticAssert(): stdClass {
+        if (Obj4::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::staticAssert');
+    }
+
+    /**
+     * @param StaticAssert
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStaticAssert(StaticAssert $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return StaticAssert
+     */
+    public function getStaticAssert(): StaticAssert {
+        if (Obj4::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert;
+        }
+        throw new Exception('never get to getStaticAssert Obj4::staticAssert');
+    }
+
+    /**
+     * @return StaticAssert
+     */
+    public static function sampleStaticAssert(): StaticAssert {
+        return StaticAssert::sample(); /*65:staticAssert*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return StaticCast
+     */
+    public static function fromStaticCast(stdClass $value): StaticCast {
+        return StaticCast::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStaticCast(): stdClass {
+        if (Obj4::validateStaticCast($this->staticCast))  {
+            return $this->staticCast->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::staticCast');
+    }
+
+    /**
+     * @param StaticCast
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStaticCast(StaticCast $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return StaticCast
+     */
+    public function getStaticCast(): StaticCast {
+        if (Obj4::validateStaticCast($this->staticCast))  {
+            return $this->staticCast;
+        }
+        throw new Exception('never get to getStaticCast Obj4::staticCast');
+    }
+
+    /**
+     * @return StaticCast
+     */
+    public static function sampleStaticCast(): StaticCast {
+        return StaticCast::sample(); /*66:staticCast*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Strictfp
+     */
+    public static function fromStrictfp(stdClass $value): Strictfp {
+        return Strictfp::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStrictfp(): stdClass {
+        if (Obj4::validateStrictfp($this->strictfp))  {
+            return $this->strictfp->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::strictfp');
+    }
+
+    /**
+     * @param Strictfp
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStrictfp(Strictfp $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Strictfp
+     */
+    public function getStrictfp(): Strictfp {
+        if (Obj4::validateStrictfp($this->strictfp))  {
+            return $this->strictfp;
+        }
+        throw new Exception('never get to getStrictfp Obj4::strictfp');
+    }
+
+    /**
+     * @return Strictfp
+     */
+    public static function sampleStrictfp(): Strictfp {
+        return Strictfp::sample(); /*67:strictfp*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return StringClass
+     */
+    public static function fromString(stdClass $value): StringClass {
+        return StringClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toString(): stdClass {
+        if (Obj4::validateString($this->string))  {
+            return $this->string->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::string');
+    }
+
+    /**
+     * @param StringClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateString(StringClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return StringClass
+     */
+    public function getString(): StringClass {
+        if (Obj4::validateString($this->string))  {
+            return $this->string;
+        }
+        throw new Exception('never get to getString Obj4::string');
+    }
+
+    /**
+     * @return StringClass
+     */
+    public static function sampleString(): StringClass {
+        return StringClass::sample(); /*68:string*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Struct
+     */
+    public static function fromStruct(stdClass $value): Struct {
+        return Struct::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStruct(): stdClass {
+        if (Obj4::validateStruct($this->struct))  {
+            return $this->struct->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::struct');
+    }
+
+    /**
+     * @param Struct
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStruct(Struct $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Struct
+     */
+    public function getStruct(): Struct {
+        if (Obj4::validateStruct($this->struct))  {
+            return $this->struct;
+        }
+        throw new Exception('never get to getStruct Obj4::struct');
+    }
+
+    /**
+     * @return Struct
+     */
+    public static function sampleStruct(): Struct {
+        return Struct::sample(); /*69:struct*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Subscript
+     */
+    public static function fromSubscript(stdClass $value): Subscript {
+        return Subscript::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSubscript(): stdClass {
+        if (Obj4::validateSubscript($this->subscript))  {
+            return $this->subscript->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::subscript');
+    }
+
+    /**
+     * @param Subscript
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSubscript(Subscript $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Subscript
+     */
+    public function getSubscript(): Subscript {
+        if (Obj4::validateSubscript($this->subscript))  {
+            return $this->subscript;
+        }
+        throw new Exception('never get to getSubscript Obj4::subscript');
+    }
+
+    /**
+     * @return Subscript
+     */
+    public static function sampleSubscript(): Subscript {
+        return Subscript::sample(); /*70:subscript*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Super
+     */
+    public static function fromSuper(stdClass $value): Super {
+        return Super::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSuper(): stdClass {
+        if (Obj4::validateSuper($this->super))  {
+            return $this->super->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::super');
+    }
+
+    /**
+     * @param Super
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSuper(Super $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Super
+     */
+    public function getSuper(): Super {
+        if (Obj4::validateSuper($this->super))  {
+            return $this->super;
+        }
+        throw new Exception('never get to getSuper Obj4::super');
+    }
+
+    /**
+     * @return Super
+     */
+    public static function sampleSuper(): Super {
+        return Super::sample(); /*71:super*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return SwitchClass
+     */
+    public static function fromSwitch(stdClass $value): SwitchClass {
+        return SwitchClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSwitch(): stdClass {
+        if (Obj4::validateSwitch($this->switch))  {
+            return $this->switch->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::switch');
+    }
+
+    /**
+     * @param SwitchClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSwitch(SwitchClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SwitchClass
+     */
+    public function getSwitch(): SwitchClass {
+        if (Obj4::validateSwitch($this->switch))  {
+            return $this->switch;
+        }
+        throw new Exception('never get to getSwitch Obj4::switch');
+    }
+
+    /**
+     * @return SwitchClass
+     */
+    public static function sampleSwitch(): SwitchClass {
+        return SwitchClass::sample(); /*72:switch*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Symbol
+     */
+    public static function fromSymbol(stdClass $value): Symbol {
+        return Symbol::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSymbol(): stdClass {
+        if (Obj4::validateSymbol($this->symbol))  {
+            return $this->symbol->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::symbol');
+    }
+
+    /**
+     * @param Symbol
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSymbol(Symbol $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Symbol
+     */
+    public function getSymbol(): Symbol {
+        if (Obj4::validateSymbol($this->symbol))  {
+            return $this->symbol;
+        }
+        throw new Exception('never get to getSymbol Obj4::symbol');
+    }
+
+    /**
+     * @return Symbol
+     */
+    public static function sampleSymbol(): Symbol {
+        return Symbol::sample(); /*73:symbol*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Synchronized
+     */
+    public static function fromSynchronized(stdClass $value): Synchronized {
+        return Synchronized::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSynchronized(): stdClass {
+        if (Obj4::validateSynchronized($this->synchronized))  {
+            return $this->synchronized->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::synchronized');
+    }
+
+    /**
+     * @param Synchronized
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSynchronized(Synchronized $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Synchronized
+     */
+    public function getSynchronized(): Synchronized {
+        if (Obj4::validateSynchronized($this->synchronized))  {
+            return $this->synchronized;
+        }
+        throw new Exception('never get to getSynchronized Obj4::synchronized');
+    }
+
+    /**
+     * @return Synchronized
+     */
+    public static function sampleSynchronized(): Synchronized {
+        return Synchronized::sample(); /*74:synchronized*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return System
+     */
+    public static function fromSystem(stdClass $value): System {
+        return System::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSystem(): stdClass {
+        if (Obj4::validateSystem($this->system))  {
+            return $this->system->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::system');
+    }
+
+    /**
+     * @param System
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSystem(System $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return System
+     */
+    public function getSystem(): System {
+        if (Obj4::validateSystem($this->system))  {
+            return $this->system;
+        }
+        throw new Exception('never get to getSystem Obj4::system');
+    }
+
+    /**
+     * @return System
+     */
+    public static function sampleSystem(): System {
+        return System::sample(); /*75:system*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Template
+     */
+    public static function fromTemplate(stdClass $value): Template {
+        return Template::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTemplate(): stdClass {
+        if (Obj4::validateTemplate($this->template))  {
+            return $this->template->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::template');
+    }
+
+    /**
+     * @param Template
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTemplate(Template $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Template
+     */
+    public function getTemplate(): Template {
+        if (Obj4::validateTemplate($this->template))  {
+            return $this->template;
+        }
+        throw new Exception('never get to getTemplate Obj4::template');
+    }
+
+    /**
+     * @return Template
+     */
+    public static function sampleTemplate(): Template {
+        return Template::sample(); /*76:template*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Then
+     */
+    public static function fromThen(stdClass $value): Then {
+        return Then::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toThen(): stdClass {
+        if (Obj4::validateThen($this->then))  {
+            return $this->then->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::then');
+    }
+
+    /**
+     * @param Then
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThen(Then $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Then
+     */
+    public function getThen(): Then {
+        if (Obj4::validateThen($this->then))  {
+            return $this->then;
+        }
+        throw new Exception('never get to getThen Obj4::then');
+    }
+
+    /**
+     * @return Then
+     */
+    public static function sampleThen(): Then {
+        return Then::sample(); /*77:then*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ThreadLocal
+     */
+    public static function fromThreadLocal(stdClass $value): ThreadLocal {
+        return ThreadLocal::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toThreadLocal(): stdClass {
+        if (Obj4::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::threadLocal');
+    }
+
+    /**
+     * @param ThreadLocal
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThreadLocal(ThreadLocal $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ThreadLocal
+     */
+    public function getThreadLocal(): ThreadLocal {
+        if (Obj4::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal;
+        }
+        throw new Exception('never get to getThreadLocal Obj4::threadLocal');
+    }
+
+    /**
+     * @return ThreadLocal
+     */
+    public static function sampleThreadLocal(): ThreadLocal {
+        return ThreadLocal::sample(); /*78:threadLocal*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ThrowClass
+     */
+    public static function fromThrow(stdClass $value): ThrowClass {
+        return ThrowClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toThrow(): stdClass {
+        if (Obj4::validateThrow($this->throw))  {
+            return $this->throw->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::throw');
+    }
+
+    /**
+     * @param ThrowClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThrow(ThrowClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ThrowClass
+     */
+    public function getThrow(): ThrowClass {
+        if (Obj4::validateThrow($this->throw))  {
+            return $this->throw;
+        }
+        throw new Exception('never get to getThrow Obj4::throw');
+    }
+
+    /**
+     * @return ThrowClass
+     */
+    public static function sampleThrow(): ThrowClass {
+        return ThrowClass::sample(); /*79:throw*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Throws
+     */
+    public static function fromThrows(stdClass $value): Throws {
+        return Throws::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toThrows(): stdClass {
+        if (Obj4::validateThrows($this->throws))  {
+            return $this->throws->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::throws');
+    }
+
+    /**
+     * @param Throws
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThrows(Throws $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Throws
+     */
+    public function getThrows(): Throws {
+        if (Obj4::validateThrows($this->throws))  {
+            return $this->throws;
+        }
+        throw new Exception('never get to getThrows Obj4::throws');
+    }
+
+    /**
+     * @return Throws
+     */
+    public static function sampleThrows(): Throws {
+        return Throws::sample(); /*80:throws*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ToJSON
+     */
+    public static function fromToJSON(stdClass $value): ToJSON {
+        return ToJSON::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toToJSON(): stdClass {
+        if (Obj4::validateToJSON($this->toJSON))  {
+            return $this->toJSON->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::toJSON');
+    }
+
+    /**
+     * @param ToJSON
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateToJSON(ToJSON $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ToJSON
+     */
+    public function getToJSON(): ToJSON {
+        if (Obj4::validateToJSON($this->toJSON))  {
+            return $this->toJSON;
+        }
+        throw new Exception('never get to getToJSON Obj4::toJSON');
+    }
+
+    /**
+     * @return ToJSON
+     */
+    public static function sampleToJSON(): ToJSON {
+        return ToJSON::sample(); /*81:toJSON*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return TopLevelClass
+     */
+    public static function fromTopLevel(stdClass $value): TopLevelClass {
+        return TopLevelClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTopLevel(): stdClass {
+        if (Obj4::validateTopLevel($this->topLevel))  {
+            return $this->topLevel->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::topLevel');
+    }
+
+    /**
+     * @param TopLevelClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTopLevel(TopLevelClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return TopLevelClass
+     */
+    public function getTopLevel(): TopLevelClass {
+        if (Obj4::validateTopLevel($this->topLevel))  {
+            return $this->topLevel;
+        }
+        throw new Exception('never get to getTopLevel Obj4::topLevel');
+    }
+
+    /**
+     * @return TopLevelClass
+     */
+    public static function sampleTopLevel(): TopLevelClass {
+        return TopLevelClass::sample(); /*82:topLevel*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Transient
+     */
+    public static function fromTransient(stdClass $value): Transient {
+        return Transient::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTransient(): stdClass {
+        if (Obj4::validateTransient($this->transient))  {
+            return $this->transient->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::transient');
+    }
+
+    /**
+     * @param Transient
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTransient(Transient $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Transient
+     */
+    public function getTransient(): Transient {
+        if (Obj4::validateTransient($this->transient))  {
+            return $this->transient;
+        }
+        throw new Exception('never get to getTransient Obj4::transient');
+    }
+
+    /**
+     * @return Transient
+     */
+    public static function sampleTransient(): Transient {
+        return Transient::sample(); /*83:transient*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return TrueClass
+     */
+    public static function fromTrue(stdClass $value): TrueClass {
+        return TrueClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTrue(): stdClass {
+        if (Obj4::validateTrue($this->true))  {
+            return $this->true->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::true');
+    }
+
+    /**
+     * @param TrueClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTrue(TrueClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return TrueClass
+     */
+    public function getTrue(): TrueClass {
+        if (Obj4::validateTrue($this->true))  {
+            return $this->true;
+        }
+        throw new Exception('never get to getTrue Obj4::true');
+    }
+
+    /**
+     * @return TrueClass
+     */
+    public static function sampleTrue(): TrueClass {
+        return TrueClass::sample(); /*84:true*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return TryClass
+     */
+    public static function fromTry(stdClass $value): TryClass {
+        return TryClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTry(): stdClass {
+        if (Obj4::validateTry($this->try))  {
+            return $this->try->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::try');
+    }
+
+    /**
+     * @param TryClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTry(TryClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return TryClass
+     */
+    public function getTry(): TryClass {
+        if (Obj4::validateTry($this->try))  {
+            return $this->try;
+        }
+        throw new Exception('never get to getTry Obj4::try');
+    }
+
+    /**
+     * @return TryClass
+     */
+    public static function sampleTry(): TryClass {
+        return TryClass::sample(); /*85:try*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Type
+     */
+    public static function fromType(stdClass $value): Type {
+        return Type::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toType(): stdClass {
+        if (Obj4::validateType($this->type))  {
+            return $this->type->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::type');
+    }
+
+    /**
+     * @param Type
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateType(Type $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Type
+     */
+    public function getType(): Type {
+        if (Obj4::validateType($this->type))  {
+            return $this->type;
+        }
+        throw new Exception('never get to getType Obj4::type');
+    }
+
+    /**
+     * @return Type
+     */
+    public static function sampleType(): Type {
+        return Type::sample(); /*86:type*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Typealias
+     */
+    public static function fromTypealias(stdClass $value): Typealias {
+        return Typealias::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTypealias(): stdClass {
+        if (Obj4::validateTypealias($this->typealias))  {
+            return $this->typealias->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::typealias');
+    }
+
+    /**
+     * @param Typealias
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypealias(Typealias $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Typealias
+     */
+    public function getTypealias(): Typealias {
+        if (Obj4::validateTypealias($this->typealias))  {
+            return $this->typealias;
+        }
+        throw new Exception('never get to getTypealias Obj4::typealias');
+    }
+
+    /**
+     * @return Typealias
+     */
+    public static function sampleTypealias(): Typealias {
+        return Typealias::sample(); /*87:typealias*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Typedef
+     */
+    public static function fromTypedef(stdClass $value): Typedef {
+        return Typedef::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTypedef(): stdClass {
+        if (Obj4::validateTypedef($this->typedef))  {
+            return $this->typedef->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::typedef');
+    }
+
+    /**
+     * @param Typedef
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypedef(Typedef $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Typedef
+     */
+    public function getTypedef(): Typedef {
+        if (Obj4::validateTypedef($this->typedef))  {
+            return $this->typedef;
+        }
+        throw new Exception('never get to getTypedef Obj4::typedef');
+    }
+
+    /**
+     * @return Typedef
+     */
+    public static function sampleTypedef(): Typedef {
+        return Typedef::sample(); /*88:typedef*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Typeid
+     */
+    public static function fromTypeid(stdClass $value): Typeid {
+        return Typeid::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTypeid(): stdClass {
+        if (Obj4::validateTypeid($this->typeid))  {
+            return $this->typeid->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::typeid');
+    }
+
+    /**
+     * @param Typeid
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypeid(Typeid $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Typeid
+     */
+    public function getTypeid(): Typeid {
+        if (Obj4::validateTypeid($this->typeid))  {
+            return $this->typeid;
+        }
+        throw new Exception('never get to getTypeid Obj4::typeid');
+    }
+
+    /**
+     * @return Typeid
+     */
+    public static function sampleTypeid(): Typeid {
+        return Typeid::sample(); /*89:typeid*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Typename
+     */
+    public static function fromTypename(stdClass $value): Typename {
+        return Typename::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTypename(): stdClass {
+        if (Obj4::validateTypename($this->typename))  {
+            return $this->typename->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::typename');
+    }
+
+    /**
+     * @param Typename
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypename(Typename $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Typename
+     */
+    public function getTypename(): Typename {
+        if (Obj4::validateTypename($this->typename))  {
+            return $this->typename;
+        }
+        throw new Exception('never get to getTypename Obj4::typename');
+    }
+
+    /**
+     * @return Typename
+     */
+    public static function sampleTypename(): Typename {
+        return Typename::sample(); /*90:typename*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Typeof
+     */
+    public static function fromTypeof(stdClass $value): Typeof {
+        return Typeof::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTypeof(): stdClass {
+        if (Obj4::validateTypeof($this->typeof))  {
+            return $this->typeof->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::typeof');
+    }
+
+    /**
+     * @param Typeof
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypeof(Typeof $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Typeof
+     */
+    public function getTypeof(): Typeof {
+        if (Obj4::validateTypeof($this->typeof))  {
+            return $this->typeof;
+        }
+        throw new Exception('never get to getTypeof Obj4::typeof');
+    }
+
+    /**
+     * @return Typeof
+     */
+    public static function sampleTypeof(): Typeof {
+        return Typeof::sample(); /*91:typeof*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Uint
+     */
+    public static function fromUint(stdClass $value): Uint {
+        return Uint::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUint(): stdClass {
+        if (Obj4::validateUint($this->uint))  {
+            return $this->uint->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::uint');
+    }
+
+    /**
+     * @param Uint
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUint(Uint $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Uint
+     */
+    public function getUint(): Uint {
+        if (Obj4::validateUint($this->uint))  {
+            return $this->uint;
+        }
+        throw new Exception('never get to getUint Obj4::uint');
+    }
+
+    /**
+     * @return Uint
+     */
+    public static function sampleUint(): Uint {
+        return Uint::sample(); /*92:uint*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Ulong
+     */
+    public static function fromUlong(stdClass $value): Ulong {
+        return Ulong::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUlong(): stdClass {
+        if (Obj4::validateUlong($this->ulong))  {
+            return $this->ulong->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::ulong');
+    }
+
+    /**
+     * @param Ulong
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUlong(Ulong $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Ulong
+     */
+    public function getUlong(): Ulong {
+        if (Obj4::validateUlong($this->ulong))  {
+            return $this->ulong;
+        }
+        throw new Exception('never get to getUlong Obj4::ulong');
+    }
+
+    /**
+     * @return Ulong
+     */
+    public static function sampleUlong(): Ulong {
+        return Ulong::sample(); /*93:ulong*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Unchecked
+     */
+    public static function fromUnchecked(stdClass $value): Unchecked {
+        return Unchecked::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUnchecked(): stdClass {
+        if (Obj4::validateUnchecked($this->unchecked))  {
+            return $this->unchecked->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::unchecked');
+    }
+
+    /**
+     * @param Unchecked
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnchecked(Unchecked $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Unchecked
+     */
+    public function getUnchecked(): Unchecked {
+        if (Obj4::validateUnchecked($this->unchecked))  {
+            return $this->unchecked;
+        }
+        throw new Exception('never get to getUnchecked Obj4::unchecked');
+    }
+
+    /**
+     * @return Unchecked
+     */
+    public static function sampleUnchecked(): Unchecked {
+        return Unchecked::sample(); /*94:unchecked*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Undefined
+     */
+    public static function fromUndefined(stdClass $value): Undefined {
+        return Undefined::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUndefined(): stdClass {
+        if (Obj4::validateUndefined($this->undefined))  {
+            return $this->undefined->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::undefined');
+    }
+
+    /**
+     * @param Undefined
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUndefined(Undefined $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Undefined
+     */
+    public function getUndefined(): Undefined {
+        if (Obj4::validateUndefined($this->undefined))  {
+            return $this->undefined;
+        }
+        throw new Exception('never get to getUndefined Obj4::undefined');
+    }
+
+    /**
+     * @return Undefined
+     */
+    public static function sampleUndefined(): Undefined {
+        return Undefined::sample(); /*95:undefined*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj4::validateDummy($this->dummy)
+        || Obj4::validateObj4Self($this->obj4Self)
+        || Obj4::validateObj4This($this->obj4This)
+        || Obj4::validateObj4True($this->obj4True)
+        || Obj4::validateObj4Type($this->obj4Type)
+        || Obj4::validatePublic($this->public)
+        || Obj4::validateQuicktype($this->quicktype)
+        || Obj4::validateRaise($this->raise)
+        || Obj4::validateRange($this->range)
+        || Obj4::validateReadonly($this->readonly)
+        || Obj4::validateRef($this->ref)
+        || Obj4::validateRegister($this->register)
+        || Obj4::validateReinterpretCast($this->reinterpretCast)
+        || Obj4::validateRepeat($this->repeat)
+        || Obj4::validateRequire($this->require)
+        || Obj4::validateRequired($this->required)
+        || Obj4::validateRequires($this->requires)
+        || Obj4::validateRestrict($this->restrict)
+        || Obj4::validateRetain($this->retain)
+        || Obj4::validateRethrows($this->rethrows)
+        || Obj4::validateReturn($this->return)
+        || Obj4::validateRight($this->right)
+        || Obj4::validateSbyte($this->sbyte)
+        || Obj4::validateSealed($this->sealed)
+        || Obj4::validateSel($this->sel)
+        || Obj4::validateSelect($this->select)
+        || Obj4::validateSelf($this->self)
+        || Obj4::validateSerialize($this->serialize)
+        || Obj4::validateSet($this->set)
+        || Obj4::validateShort($this->short)
+        || Obj4::validateSigned($this->signed)
+        || Obj4::validateSizeof($this->sizeof)
+        || Obj4::validateStackalloc($this->stackalloc)
+        || Obj4::validateStatic($this->static)
+        || Obj4::validateStaticAssert($this->staticAssert)
+        || Obj4::validateStaticCast($this->staticCast)
+        || Obj4::validateStrictfp($this->strictfp)
+        || Obj4::validateString($this->string)
+        || Obj4::validateStruct($this->struct)
+        || Obj4::validateSubscript($this->subscript)
+        || Obj4::validateSuper($this->super)
+        || Obj4::validateSwitch($this->switch)
+        || Obj4::validateSymbol($this->symbol)
+        || Obj4::validateSynchronized($this->synchronized)
+        || Obj4::validateSystem($this->system)
+        || Obj4::validateTemplate($this->template)
+        || Obj4::validateThen($this->then)
+        || Obj4::validateThreadLocal($this->threadLocal)
+        || Obj4::validateThrow($this->throw)
+        || Obj4::validateThrows($this->throws)
+        || Obj4::validateToJSON($this->toJSON)
+        || Obj4::validateTopLevel($this->topLevel)
+        || Obj4::validateTransient($this->transient)
+        || Obj4::validateTrue($this->true)
+        || Obj4::validateTry($this->try)
+        || Obj4::validateType($this->type)
+        || Obj4::validateTypealias($this->typealias)
+        || Obj4::validateTypedef($this->typedef)
+        || Obj4::validateTypeid($this->typeid)
+        || Obj4::validateTypename($this->typename)
+        || Obj4::validateTypeof($this->typeof)
+        || Obj4::validateUint($this->uint)
+        || Obj4::validateUlong($this->ulong)
+        || Obj4::validateUnchecked($this->unchecked)
+        || Obj4::validateUndefined($this->undefined);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'self'} = $this->toObj4Self();
+        $out->{'this'} = $this->toObj4This();
+        $out->{'true'} = $this->toObj4True();
+        $out->{'type'} = $this->toObj4Type();
+        $out->{'public'} = $this->toPublic();
+        $out->{'quicktype'} = $this->toQuicktype();
+        $out->{'raise'} = $this->toRaise();
+        $out->{'range'} = $this->toRange();
+        $out->{'readonly'} = $this->toReadonly();
+        $out->{'ref'} = $this->toRef();
+        $out->{'register'} = $this->toRegister();
+        $out->{'reinterpret_cast'} = $this->toReinterpretCast();
+        $out->{'repeat'} = $this->toRepeat();
+        $out->{'require'} = $this->toRequire();
+        $out->{'required'} = $this->toRequired();
+        $out->{'requires'} = $this->toRequires();
+        $out->{'restrict'} = $this->toRestrict();
+        $out->{'retain'} = $this->toRetain();
+        $out->{'rethrows'} = $this->toRethrows();
+        $out->{'return'} = $this->toReturn();
+        $out->{'right'} = $this->toRight();
+        $out->{'sbyte'} = $this->toSbyte();
+        $out->{'sealed'} = $this->toSealed();
+        $out->{'SEL'} = $this->toSel();
+        $out->{'select'} = $this->toSelect();
+        $out->{'Self'} = $this->toSelf();
+        $out->{'serialize'} = $this->toSerialize();
+        $out->{'set'} = $this->toSet();
+        $out->{'short'} = $this->toShort();
+        $out->{'signed'} = $this->toSigned();
+        $out->{'sizeof'} = $this->toSizeof();
+        $out->{'stackalloc'} = $this->toStackalloc();
+        $out->{'static'} = $this->toStatic();
+        $out->{'static_assert'} = $this->toStaticAssert();
+        $out->{'static_cast'} = $this->toStaticCast();
+        $out->{'strictfp'} = $this->toStrictfp();
+        $out->{'string'} = $this->toString();
+        $out->{'struct'} = $this->toStruct();
+        $out->{'subscript'} = $this->toSubscript();
+        $out->{'super'} = $this->toSuper();
+        $out->{'switch'} = $this->toSwitch();
+        $out->{'symbol'} = $this->toSymbol();
+        $out->{'synchronized'} = $this->toSynchronized();
+        $out->{'system'} = $this->toSystem();
+        $out->{'template'} = $this->toTemplate();
+        $out->{'then'} = $this->toThen();
+        $out->{'thread_local'} = $this->toThreadLocal();
+        $out->{'throw'} = $this->toThrow();
+        $out->{'throws'} = $this->toThrows();
+        $out->{'to_json'} = $this->toToJSON();
+        $out->{'top_level'} = $this->toTopLevel();
+        $out->{'transient'} = $this->toTransient();
+        $out->{'True'} = $this->toTrue();
+        $out->{'try'} = $this->toTry();
+        $out->{'Type'} = $this->toType();
+        $out->{'typealias'} = $this->toTypealias();
+        $out->{'typedef'} = $this->toTypedef();
+        $out->{'typeid'} = $this->toTypeid();
+        $out->{'typename'} = $this->toTypename();
+        $out->{'typeof'} = $this->toTypeof();
+        $out->{'uint'} = $this->toUint();
+        $out->{'ulong'} = $this->toUlong();
+        $out->{'unchecked'} = $this->toUnchecked();
+        $out->{'undefined'} = $this->toUndefined();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj4
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj4 {
+        return new Obj4(
+         Obj4::fromDummy($obj->{'dummy'})
+        ,Obj4::fromObj4Self($obj->{'self'})
+        ,Obj4::fromObj4This($obj->{'this'})
+        ,Obj4::fromObj4True($obj->{'true'})
+        ,Obj4::fromObj4Type($obj->{'type'})
+        ,Obj4::fromPublic($obj->{'public'})
+        ,Obj4::fromQuicktype($obj->{'quicktype'})
+        ,Obj4::fromRaise($obj->{'raise'})
+        ,Obj4::fromRange($obj->{'range'})
+        ,Obj4::fromReadonly($obj->{'readonly'})
+        ,Obj4::fromRef($obj->{'ref'})
+        ,Obj4::fromRegister($obj->{'register'})
+        ,Obj4::fromReinterpretCast($obj->{'reinterpret_cast'})
+        ,Obj4::fromRepeat($obj->{'repeat'})
+        ,Obj4::fromRequire($obj->{'require'})
+        ,Obj4::fromRequired($obj->{'required'})
+        ,Obj4::fromRequires($obj->{'requires'})
+        ,Obj4::fromRestrict($obj->{'restrict'})
+        ,Obj4::fromRetain($obj->{'retain'})
+        ,Obj4::fromRethrows($obj->{'rethrows'})
+        ,Obj4::fromReturn($obj->{'return'})
+        ,Obj4::fromRight($obj->{'right'})
+        ,Obj4::fromSbyte($obj->{'sbyte'})
+        ,Obj4::fromSealed($obj->{'sealed'})
+        ,Obj4::fromSel($obj->{'SEL'})
+        ,Obj4::fromSelect($obj->{'select'})
+        ,Obj4::fromSelf($obj->{'Self'})
+        ,Obj4::fromSerialize($obj->{'serialize'})
+        ,Obj4::fromSet($obj->{'set'})
+        ,Obj4::fromShort($obj->{'short'})
+        ,Obj4::fromSigned($obj->{'signed'})
+        ,Obj4::fromSizeof($obj->{'sizeof'})
+        ,Obj4::fromStackalloc($obj->{'stackalloc'})
+        ,Obj4::fromStatic($obj->{'static'})
+        ,Obj4::fromStaticAssert($obj->{'static_assert'})
+        ,Obj4::fromStaticCast($obj->{'static_cast'})
+        ,Obj4::fromStrictfp($obj->{'strictfp'})
+        ,Obj4::fromString($obj->{'string'})
+        ,Obj4::fromStruct($obj->{'struct'})
+        ,Obj4::fromSubscript($obj->{'subscript'})
+        ,Obj4::fromSuper($obj->{'super'})
+        ,Obj4::fromSwitch($obj->{'switch'})
+        ,Obj4::fromSymbol($obj->{'symbol'})
+        ,Obj4::fromSynchronized($obj->{'synchronized'})
+        ,Obj4::fromSystem($obj->{'system'})
+        ,Obj4::fromTemplate($obj->{'template'})
+        ,Obj4::fromThen($obj->{'then'})
+        ,Obj4::fromThreadLocal($obj->{'thread_local'})
+        ,Obj4::fromThrow($obj->{'throw'})
+        ,Obj4::fromThrows($obj->{'throws'})
+        ,Obj4::fromToJSON($obj->{'to_json'})
+        ,Obj4::fromTopLevel($obj->{'top_level'})
+        ,Obj4::fromTransient($obj->{'transient'})
+        ,Obj4::fromTrue($obj->{'True'})
+        ,Obj4::fromTry($obj->{'try'})
+        ,Obj4::fromType($obj->{'Type'})
+        ,Obj4::fromTypealias($obj->{'typealias'})
+        ,Obj4::fromTypedef($obj->{'typedef'})
+        ,Obj4::fromTypeid($obj->{'typeid'})
+        ,Obj4::fromTypename($obj->{'typename'})
+        ,Obj4::fromTypeof($obj->{'typeof'})
+        ,Obj4::fromUint($obj->{'uint'})
+        ,Obj4::fromUlong($obj->{'ulong'})
+        ,Obj4::fromUnchecked($obj->{'unchecked'})
+        ,Obj4::fromUndefined($obj->{'undefined'})
+        );
+    }
+
+    /**
+     * @return Obj4
+     */
+    public static function sample(): Obj4 {
+        return new Obj4(
+         Obj4::sampleDummy()
+        ,Obj4::sampleObj4Self()
+        ,Obj4::sampleObj4This()
+        ,Obj4::sampleObj4True()
+        ,Obj4::sampleObj4Type()
+        ,Obj4::samplePublic()
+        ,Obj4::sampleQuicktype()
+        ,Obj4::sampleRaise()
+        ,Obj4::sampleRange()
+        ,Obj4::sampleReadonly()
+        ,Obj4::sampleRef()
+        ,Obj4::sampleRegister()
+        ,Obj4::sampleReinterpretCast()
+        ,Obj4::sampleRepeat()
+        ,Obj4::sampleRequire()
+        ,Obj4::sampleRequired()
+        ,Obj4::sampleRequires()
+        ,Obj4::sampleRestrict()
+        ,Obj4::sampleRetain()
+        ,Obj4::sampleRethrows()
+        ,Obj4::sampleReturn()
+        ,Obj4::sampleRight()
+        ,Obj4::sampleSbyte()
+        ,Obj4::sampleSealed()
+        ,Obj4::sampleSel()
+        ,Obj4::sampleSelect()
+        ,Obj4::sampleSelf()
+        ,Obj4::sampleSerialize()
+        ,Obj4::sampleSet()
+        ,Obj4::sampleShort()
+        ,Obj4::sampleSigned()
+        ,Obj4::sampleSizeof()
+        ,Obj4::sampleStackalloc()
+        ,Obj4::sampleStatic()
+        ,Obj4::sampleStaticAssert()
+        ,Obj4::sampleStaticCast()
+        ,Obj4::sampleStrictfp()
+        ,Obj4::sampleString()
+        ,Obj4::sampleStruct()
+        ,Obj4::sampleSubscript()
+        ,Obj4::sampleSuper()
+        ,Obj4::sampleSwitch()
+        ,Obj4::sampleSymbol()
+        ,Obj4::sampleSynchronized()
+        ,Obj4::sampleSystem()
+        ,Obj4::sampleTemplate()
+        ,Obj4::sampleThen()
+        ,Obj4::sampleThreadLocal()
+        ,Obj4::sampleThrow()
+        ,Obj4::sampleThrows()
+        ,Obj4::sampleToJSON()
+        ,Obj4::sampleTopLevel()
+        ,Obj4::sampleTransient()
+        ,Obj4::sampleTrue()
+        ,Obj4::sampleTry()
+        ,Obj4::sampleType()
+        ,Obj4::sampleTypealias()
+        ,Obj4::sampleTypedef()
+        ,Obj4::sampleTypeid()
+        ,Obj4::sampleTypename()
+        ,Obj4::sampleTypeof()
+        ,Obj4::sampleUint()
+        ,Obj4::sampleUlong()
+        ,Obj4::sampleUnchecked()
+        ,Obj4::sampleUndefined()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj4Self
+
+class Obj4Self {
+    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 (Obj4Self::validateSelf($this->self))  {
+            return $this->self; /*int*/
+        }
+        throw new Exception('never get to this Obj4Self::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 (Obj4Self::validateSelf($this->self))  {
+            return $this->self;
+        }
+        throw new Exception('never get to getSelf Obj4Self::self');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelf(): int {
+        return 31; /*31:self*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj4Self::validateSelf($this->self);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'self'} = $this->toSelf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj4Self
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj4Self {
+        return new Obj4Self(
+         Obj4Self::fromSelf($obj->{'self'})
+        );
+    }
+
+    /**
+     * @return Obj4Self
+     */
+    public static function sample(): Obj4Self {
+        return new Obj4Self(
+         Obj4Self::sampleSelf()
+        );
+    }
+}
+
+// This is an autogenerated file:This
+
+class This {
+    private int $thisThis; // json:this Required
+
+    /**
+     * @param int $thisThis
+     */
+    public function __construct(int $thisThis) {
+        $this->thisThis = $thisThis;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThisThis(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThisThis(): int {
+        if (This::validateThisThis($this->thisThis))  {
+            return $this->thisThis; /*int*/
+        }
+        throw new Exception('never get to this This::thisThis');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThisThis(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getThisThis(): int {
+        if (This::validateThisThis($this->thisThis))  {
+            return $this->thisThis;
+        }
+        throw new Exception('never get to getThisThis This::thisThis');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleThisThis(): int {
+        return 31; /*31:thisThis*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return This::validateThisThis($this->thisThis);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'this'} = $this->toThisThis();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return This
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): This {
+        return new This(
+         This::fromThisThis($obj->{'this'})
+        );
+    }
+
+    /**
+     * @return This
+     */
+    public static function sample(): This {
+        return new This(
+         This::sampleThisThis()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj4True
+
+class Obj4True {
+    private int $true; // json:true Required
+
+    /**
+     * @param int $true
+     */
+    public function __construct(int $true) {
+        $this->true = $true;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTrue(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTrue(): int {
+        if (Obj4True::validateTrue($this->true))  {
+            return $this->true; /*int*/
+        }
+        throw new Exception('never get to this Obj4True::true');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTrue(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTrue(): int {
+        if (Obj4True::validateTrue($this->true))  {
+            return $this->true;
+        }
+        throw new Exception('never get to getTrue Obj4True::true');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTrue(): int {
+        return 31; /*31:true*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj4True::validateTrue($this->true);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'true'} = $this->toTrue();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj4True
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj4True {
+        return new Obj4True(
+         Obj4True::fromTrue($obj->{'true'})
+        );
+    }
+
+    /**
+     * @return Obj4True
+     */
+    public static function sample(): Obj4True {
+        return new Obj4True(
+         Obj4True::sampleTrue()
+        );
+    }
+}
+
+// This is an autogenerated file:TypeClass
+
+class TypeClass {
+    private int $type; // json:type Required
+
+    /**
+     * @param int $type
+     */
+    public function __construct(int $type) {
+        $this->type = $type;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromType(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toType(): int {
+        if (TypeClass::validateType($this->type))  {
+            return $this->type; /*int*/
+        }
+        throw new Exception('never get to this TypeClass::type');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateType(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getType(): int {
+        if (TypeClass::validateType($this->type))  {
+            return $this->type;
+        }
+        throw new Exception('never get to getType TypeClass::type');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleType(): int {
+        return 31; /*31:type*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TypeClass::validateType($this->type);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'type'} = $this->toType();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TypeClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TypeClass {
+        return new TypeClass(
+         TypeClass::fromType($obj->{'type'})
+        );
+    }
+
+    /**
+     * @return TypeClass
+     */
+    public static function sample(): TypeClass {
+        return new TypeClass(
+         TypeClass::sampleType()
+        );
+    }
+}
+
+// This is an autogenerated file:PublicClass
+
+class PublicClass {
+    private int $public; // json:public Required
+
+    /**
+     * @param int $public
+     */
+    public function __construct(int $public) {
+        $this->public = $public;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPublic(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPublic(): int {
+        if (PublicClass::validatePublic($this->public))  {
+            return $this->public; /*int*/
+        }
+        throw new Exception('never get to this PublicClass::public');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePublic(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPublic(): int {
+        if (PublicClass::validatePublic($this->public))  {
+            return $this->public;
+        }
+        throw new Exception('never get to getPublic PublicClass::public');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePublic(): int {
+        return 31; /*31:public*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return PublicClass::validatePublic($this->public);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'public'} = $this->toPublic();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return PublicClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): PublicClass {
+        return new PublicClass(
+         PublicClass::fromPublic($obj->{'public'})
+        );
+    }
+
+    /**
+     * @return PublicClass
+     */
+    public static function sample(): PublicClass {
+        return new PublicClass(
+         PublicClass::samplePublic()
+        );
+    }
+}
+
+// This is an autogenerated file:Quicktype
+
+class Quicktype {
+    private int $quicktype; // json:quicktype Required
+
+    /**
+     * @param int $quicktype
+     */
+    public function __construct(int $quicktype) {
+        $this->quicktype = $quicktype;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromQuicktype(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toQuicktype(): int {
+        if (Quicktype::validateQuicktype($this->quicktype))  {
+            return $this->quicktype; /*int*/
+        }
+        throw new Exception('never get to this Quicktype::quicktype');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateQuicktype(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getQuicktype(): int {
+        if (Quicktype::validateQuicktype($this->quicktype))  {
+            return $this->quicktype;
+        }
+        throw new Exception('never get to getQuicktype Quicktype::quicktype');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleQuicktype(): int {
+        return 31; /*31:quicktype*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Quicktype::validateQuicktype($this->quicktype);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'quicktype'} = $this->toQuicktype();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Quicktype
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Quicktype {
+        return new Quicktype(
+         Quicktype::fromQuicktype($obj->{'quicktype'})
+        );
+    }
+
+    /**
+     * @return Quicktype
+     */
+    public static function sample(): Quicktype {
+        return new Quicktype(
+         Quicktype::sampleQuicktype()
+        );
+    }
+}
+
+// This is an autogenerated file:Raise
+
+class Raise {
+    private int $raise; // json:raise Required
+
+    /**
+     * @param int $raise
+     */
+    public function __construct(int $raise) {
+        $this->raise = $raise;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRaise(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRaise(): int {
+        if (Raise::validateRaise($this->raise))  {
+            return $this->raise; /*int*/
+        }
+        throw new Exception('never get to this Raise::raise');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRaise(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRaise(): int {
+        if (Raise::validateRaise($this->raise))  {
+            return $this->raise;
+        }
+        throw new Exception('never get to getRaise Raise::raise');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRaise(): int {
+        return 31; /*31:raise*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Raise::validateRaise($this->raise);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'raise'} = $this->toRaise();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Raise
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Raise {
+        return new Raise(
+         Raise::fromRaise($obj->{'raise'})
+        );
+    }
+
+    /**
+     * @return Raise
+     */
+    public static function sample(): Raise {
+        return new Raise(
+         Raise::sampleRaise()
+        );
+    }
+}
+
+// This is an autogenerated file:Range
+
+class Range {
+    private int $range; // json:range Required
+
+    /**
+     * @param int $range
+     */
+    public function __construct(int $range) {
+        $this->range = $range;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRange(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRange(): int {
+        if (Range::validateRange($this->range))  {
+            return $this->range; /*int*/
+        }
+        throw new Exception('never get to this Range::range');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRange(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRange(): int {
+        if (Range::validateRange($this->range))  {
+            return $this->range;
+        }
+        throw new Exception('never get to getRange Range::range');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRange(): int {
+        return 31; /*31:range*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Range::validateRange($this->range);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'range'} = $this->toRange();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Range
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Range {
+        return new Range(
+         Range::fromRange($obj->{'range'})
+        );
+    }
+
+    /**
+     * @return Range
+     */
+    public static function sample(): Range {
+        return new Range(
+         Range::sampleRange()
+        );
+    }
+}
+
+// This is an autogenerated file:ReadonlyClass
+
+class ReadonlyClass {
+    private int $readonly; // json:readonly Required
+
+    /**
+     * @param int $readonly
+     */
+    public function __construct(int $readonly) {
+        $this->readonly = $readonly;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromReadonly(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toReadonly(): int {
+        if (ReadonlyClass::validateReadonly($this->readonly))  {
+            return $this->readonly; /*int*/
+        }
+        throw new Exception('never get to this ReadonlyClass::readonly');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReadonly(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getReadonly(): int {
+        if (ReadonlyClass::validateReadonly($this->readonly))  {
+            return $this->readonly;
+        }
+        throw new Exception('never get to getReadonly ReadonlyClass::readonly');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleReadonly(): int {
+        return 31; /*31:readonly*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ReadonlyClass::validateReadonly($this->readonly);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'readonly'} = $this->toReadonly();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ReadonlyClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ReadonlyClass {
+        return new ReadonlyClass(
+         ReadonlyClass::fromReadonly($obj->{'readonly'})
+        );
+    }
+
+    /**
+     * @return ReadonlyClass
+     */
+    public static function sample(): ReadonlyClass {
+        return new ReadonlyClass(
+         ReadonlyClass::sampleReadonly()
+        );
+    }
+}
+
+// This is an autogenerated file:Ref
+
+class Ref {
+    private int $ref; // json:ref Required
+
+    /**
+     * @param int $ref
+     */
+    public function __construct(int $ref) {
+        $this->ref = $ref;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRef(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRef(): int {
+        if (Ref::validateRef($this->ref))  {
+            return $this->ref; /*int*/
+        }
+        throw new Exception('never get to this Ref::ref');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRef(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRef(): int {
+        if (Ref::validateRef($this->ref))  {
+            return $this->ref;
+        }
+        throw new Exception('never get to getRef Ref::ref');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRef(): int {
+        return 31; /*31:ref*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Ref::validateRef($this->ref);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'ref'} = $this->toRef();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Ref
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Ref {
+        return new Ref(
+         Ref::fromRef($obj->{'ref'})
+        );
+    }
+
+    /**
+     * @return Ref
+     */
+    public static function sample(): Ref {
+        return new Ref(
+         Ref::sampleRef()
+        );
+    }
+}
+
+// This is an autogenerated file:Register
+
+class Register {
+    private int $register; // json:register Required
+
+    /**
+     * @param int $register
+     */
+    public function __construct(int $register) {
+        $this->register = $register;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRegister(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRegister(): int {
+        if (Register::validateRegister($this->register))  {
+            return $this->register; /*int*/
+        }
+        throw new Exception('never get to this Register::register');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRegister(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRegister(): int {
+        if (Register::validateRegister($this->register))  {
+            return $this->register;
+        }
+        throw new Exception('never get to getRegister Register::register');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRegister(): int {
+        return 31; /*31:register*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Register::validateRegister($this->register);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'register'} = $this->toRegister();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Register
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Register {
+        return new Register(
+         Register::fromRegister($obj->{'register'})
+        );
+    }
+
+    /**
+     * @return Register
+     */
+    public static function sample(): Register {
+        return new Register(
+         Register::sampleRegister()
+        );
+    }
+}
+
+// This is an autogenerated file:ReinterpretCast
+
+class ReinterpretCast {
+    private int $reinterpretCast; // json:reinterpret_cast Required
+
+    /**
+     * @param int $reinterpretCast
+     */
+    public function __construct(int $reinterpretCast) {
+        $this->reinterpretCast = $reinterpretCast;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromReinterpretCast(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toReinterpretCast(): int {
+        if (ReinterpretCast::validateReinterpretCast($this->reinterpretCast))  {
+            return $this->reinterpretCast; /*int*/
+        }
+        throw new Exception('never get to this ReinterpretCast::reinterpretCast');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReinterpretCast(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getReinterpretCast(): int {
+        if (ReinterpretCast::validateReinterpretCast($this->reinterpretCast))  {
+            return $this->reinterpretCast;
+        }
+        throw new Exception('never get to getReinterpretCast ReinterpretCast::reinterpretCast');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleReinterpretCast(): int {
+        return 31; /*31:reinterpretCast*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ReinterpretCast::validateReinterpretCast($this->reinterpretCast);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'reinterpret_cast'} = $this->toReinterpretCast();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ReinterpretCast
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ReinterpretCast {
+        return new ReinterpretCast(
+         ReinterpretCast::fromReinterpretCast($obj->{'reinterpret_cast'})
+        );
+    }
+
+    /**
+     * @return ReinterpretCast
+     */
+    public static function sample(): ReinterpretCast {
+        return new ReinterpretCast(
+         ReinterpretCast::sampleReinterpretCast()
+        );
+    }
+}
+
+// This is an autogenerated file:Repeat
+
+class Repeat {
+    private int $repeat; // json:repeat Required
+
+    /**
+     * @param int $repeat
+     */
+    public function __construct(int $repeat) {
+        $this->repeat = $repeat;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRepeat(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRepeat(): int {
+        if (Repeat::validateRepeat($this->repeat))  {
+            return $this->repeat; /*int*/
+        }
+        throw new Exception('never get to this Repeat::repeat');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRepeat(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRepeat(): int {
+        if (Repeat::validateRepeat($this->repeat))  {
+            return $this->repeat;
+        }
+        throw new Exception('never get to getRepeat Repeat::repeat');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRepeat(): int {
+        return 31; /*31:repeat*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Repeat::validateRepeat($this->repeat);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'repeat'} = $this->toRepeat();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Repeat
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Repeat {
+        return new Repeat(
+         Repeat::fromRepeat($obj->{'repeat'})
+        );
+    }
+
+    /**
+     * @return Repeat
+     */
+    public static function sample(): Repeat {
+        return new Repeat(
+         Repeat::sampleRepeat()
+        );
+    }
+}
+
+// This is an autogenerated file:RequireClass
+
+class RequireClass {
+    private int $require; // json:require Required
+
+    /**
+     * @param int $require
+     */
+    public function __construct(int $require) {
+        $this->require = $require;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRequire(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRequire(): int {
+        if (RequireClass::validateRequire($this->require))  {
+            return $this->require; /*int*/
+        }
+        throw new Exception('never get to this RequireClass::require');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRequire(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRequire(): int {
+        if (RequireClass::validateRequire($this->require))  {
+            return $this->require;
+        }
+        throw new Exception('never get to getRequire RequireClass::require');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRequire(): int {
+        return 31; /*31:require*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return RequireClass::validateRequire($this->require);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'require'} = $this->toRequire();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return RequireClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): RequireClass {
+        return new RequireClass(
+         RequireClass::fromRequire($obj->{'require'})
+        );
+    }
+
+    /**
+     * @return RequireClass
+     */
+    public static function sample(): RequireClass {
+        return new RequireClass(
+         RequireClass::sampleRequire()
+        );
+    }
+}
+
+// This is an autogenerated file:Required
+
+class Required {
+    private int $required; // json:required Required
+
+    /**
+     * @param int $required
+     */
+    public function __construct(int $required) {
+        $this->required = $required;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRequired(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRequired(): int {
+        if (Required::validateRequired($this->required))  {
+            return $this->required; /*int*/
+        }
+        throw new Exception('never get to this Required::required');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRequired(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRequired(): int {
+        if (Required::validateRequired($this->required))  {
+            return $this->required;
+        }
+        throw new Exception('never get to getRequired Required::required');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRequired(): int {
+        return 31; /*31:required*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Required::validateRequired($this->required);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'required'} = $this->toRequired();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Required
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Required {
+        return new Required(
+         Required::fromRequired($obj->{'required'})
+        );
+    }
+
+    /**
+     * @return Required
+     */
+    public static function sample(): Required {
+        return new Required(
+         Required::sampleRequired()
+        );
+    }
+}
+
+// This is an autogenerated file:Requires
+
+class Requires {
+    private int $requires; // json:requires Required
+
+    /**
+     * @param int $requires
+     */
+    public function __construct(int $requires) {
+        $this->requires = $requires;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRequires(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRequires(): int {
+        if (Requires::validateRequires($this->requires))  {
+            return $this->requires; /*int*/
+        }
+        throw new Exception('never get to this Requires::requires');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRequires(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRequires(): int {
+        if (Requires::validateRequires($this->requires))  {
+            return $this->requires;
+        }
+        throw new Exception('never get to getRequires Requires::requires');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRequires(): int {
+        return 31; /*31:requires*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Requires::validateRequires($this->requires);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'requires'} = $this->toRequires();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Requires
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Requires {
+        return new Requires(
+         Requires::fromRequires($obj->{'requires'})
+        );
+    }
+
+    /**
+     * @return Requires
+     */
+    public static function sample(): Requires {
+        return new Requires(
+         Requires::sampleRequires()
+        );
+    }
+}
+
+// This is an autogenerated file:Restrict
+
+class Restrict {
+    private int $restrict; // json:restrict Required
+
+    /**
+     * @param int $restrict
+     */
+    public function __construct(int $restrict) {
+        $this->restrict = $restrict;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRestrict(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRestrict(): int {
+        if (Restrict::validateRestrict($this->restrict))  {
+            return $this->restrict; /*int*/
+        }
+        throw new Exception('never get to this Restrict::restrict');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRestrict(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRestrict(): int {
+        if (Restrict::validateRestrict($this->restrict))  {
+            return $this->restrict;
+        }
+        throw new Exception('never get to getRestrict Restrict::restrict');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRestrict(): int {
+        return 31; /*31:restrict*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Restrict::validateRestrict($this->restrict);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'restrict'} = $this->toRestrict();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Restrict
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Restrict {
+        return new Restrict(
+         Restrict::fromRestrict($obj->{'restrict'})
+        );
+    }
+
+    /**
+     * @return Restrict
+     */
+    public static function sample(): Restrict {
+        return new Restrict(
+         Restrict::sampleRestrict()
+        );
+    }
+}
+
+// This is an autogenerated file:Retain
+
+class Retain {
+    private int $retain; // json:retain Required
+
+    /**
+     * @param int $retain
+     */
+    public function __construct(int $retain) {
+        $this->retain = $retain;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRetain(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRetain(): int {
+        if (Retain::validateRetain($this->retain))  {
+            return $this->retain; /*int*/
+        }
+        throw new Exception('never get to this Retain::retain');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRetain(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRetain(): int {
+        if (Retain::validateRetain($this->retain))  {
+            return $this->retain;
+        }
+        throw new Exception('never get to getRetain Retain::retain');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRetain(): int {
+        return 31; /*31:retain*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Retain::validateRetain($this->retain);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'retain'} = $this->toRetain();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Retain
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Retain {
+        return new Retain(
+         Retain::fromRetain($obj->{'retain'})
+        );
+    }
+
+    /**
+     * @return Retain
+     */
+    public static function sample(): Retain {
+        return new Retain(
+         Retain::sampleRetain()
+        );
+    }
+}
+
+// This is an autogenerated file:Rethrows
+
+class Rethrows {
+    private int $rethrows; // json:rethrows Required
+
+    /**
+     * @param int $rethrows
+     */
+    public function __construct(int $rethrows) {
+        $this->rethrows = $rethrows;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRethrows(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRethrows(): int {
+        if (Rethrows::validateRethrows($this->rethrows))  {
+            return $this->rethrows; /*int*/
+        }
+        throw new Exception('never get to this Rethrows::rethrows');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRethrows(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRethrows(): int {
+        if (Rethrows::validateRethrows($this->rethrows))  {
+            return $this->rethrows;
+        }
+        throw new Exception('never get to getRethrows Rethrows::rethrows');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRethrows(): int {
+        return 31; /*31:rethrows*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Rethrows::validateRethrows($this->rethrows);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'rethrows'} = $this->toRethrows();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Rethrows
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Rethrows {
+        return new Rethrows(
+         Rethrows::fromRethrows($obj->{'rethrows'})
+        );
+    }
+
+    /**
+     * @return Rethrows
+     */
+    public static function sample(): Rethrows {
+        return new Rethrows(
+         Rethrows::sampleRethrows()
+        );
+    }
+}
+
+// This is an autogenerated file:ReturnClass
+
+class ReturnClass {
+    private int $return; // json:return Required
+
+    /**
+     * @param int $return
+     */
+    public function __construct(int $return) {
+        $this->return = $return;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromReturn(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toReturn(): int {
+        if (ReturnClass::validateReturn($this->return))  {
+            return $this->return; /*int*/
+        }
+        throw new Exception('never get to this ReturnClass::return');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReturn(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getReturn(): int {
+        if (ReturnClass::validateReturn($this->return))  {
+            return $this->return;
+        }
+        throw new Exception('never get to getReturn ReturnClass::return');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleReturn(): int {
+        return 31; /*31:return*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ReturnClass::validateReturn($this->return);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'return'} = $this->toReturn();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ReturnClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ReturnClass {
+        return new ReturnClass(
+         ReturnClass::fromReturn($obj->{'return'})
+        );
+    }
+
+    /**
+     * @return ReturnClass
+     */
+    public static function sample(): ReturnClass {
+        return new ReturnClass(
+         ReturnClass::sampleReturn()
+        );
+    }
+}
+
+// This is an autogenerated file:Right
+
+class Right {
+    private int $right; // json:right Required
+
+    /**
+     * @param int $right
+     */
+    public function __construct(int $right) {
+        $this->right = $right;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRight(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRight(): int {
+        if (Right::validateRight($this->right))  {
+            return $this->right; /*int*/
+        }
+        throw new Exception('never get to this Right::right');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRight(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRight(): int {
+        if (Right::validateRight($this->right))  {
+            return $this->right;
+        }
+        throw new Exception('never get to getRight Right::right');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRight(): int {
+        return 31; /*31:right*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Right::validateRight($this->right);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'right'} = $this->toRight();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Right
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Right {
+        return new Right(
+         Right::fromRight($obj->{'right'})
+        );
+    }
+
+    /**
+     * @return Right
+     */
+    public static function sample(): Right {
+        return new Right(
+         Right::sampleRight()
+        );
+    }
+}
+
+// This is an autogenerated file:Sbyte
+
+class Sbyte {
+    private int $sbyte; // json:sbyte Required
+
+    /**
+     * @param int $sbyte
+     */
+    public function __construct(int $sbyte) {
+        $this->sbyte = $sbyte;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSbyte(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSbyte(): int {
+        if (Sbyte::validateSbyte($this->sbyte))  {
+            return $this->sbyte; /*int*/
+        }
+        throw new Exception('never get to this Sbyte::sbyte');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSbyte(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSbyte(): int {
+        if (Sbyte::validateSbyte($this->sbyte))  {
+            return $this->sbyte;
+        }
+        throw new Exception('never get to getSbyte Sbyte::sbyte');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSbyte(): int {
+        return 31; /*31:sbyte*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sbyte::validateSbyte($this->sbyte);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'sbyte'} = $this->toSbyte();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sbyte
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sbyte {
+        return new Sbyte(
+         Sbyte::fromSbyte($obj->{'sbyte'})
+        );
+    }
+
+    /**
+     * @return Sbyte
+     */
+    public static function sample(): Sbyte {
+        return new Sbyte(
+         Sbyte::sampleSbyte()
+        );
+    }
+}
+
+// This is an autogenerated file:Sealed
+
+class Sealed {
+    private int $sealed; // json:sealed Required
+
+    /**
+     * @param int $sealed
+     */
+    public function __construct(int $sealed) {
+        $this->sealed = $sealed;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSealed(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed; /*int*/
+        }
+        throw new Exception('never get to this Sealed::sealed');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSealed(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed;
+        }
+        throw new Exception('never get to getSealed Sealed::sealed');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSealed(): int {
+        return 31; /*31:sealed*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sealed::validateSealed($this->sealed);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'sealed'} = $this->toSealed();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sealed
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sealed {
+        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 {
+        return new Sel(
+         Sel::fromSel($obj->{'SEL'})
+        );
+    }
+
+    /**
+     * @return Sel
+     */
+    public static function sample(): Sel {
+        return new Sel(
+         Sel::sampleSel()
+        );
+    }
+}
+
+// This is an autogenerated file:Select
+
+class Select {
+    private int $select; // json:select Required
+
+    /**
+     * @param int $select
+     */
+    public function __construct(int $select) {
+        $this->select = $select;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSelect(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select; /*int*/
+        }
+        throw new Exception('never get to this Select::select');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelect(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select;
+        }
+        throw new Exception('never get to getSelect Select::select');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelect(): int {
+        return 31; /*31:select*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Select::validateSelect($this->select);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'select'} = $this->toSelect();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Select
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Select {
+        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 {
+        return new SelfClass(
+         SelfClass::fromSelf($obj->{'Self'})
+        );
+    }
+
+    /**
+     * @return SelfClass
+     */
+    public static function sample(): SelfClass {
+        return new SelfClass(
+         SelfClass::sampleSelf()
+        );
+    }
+}
+
+// This is an autogenerated file:Serialize
+
+class Serialize {
+    private int $serialize; // json:serialize Required
+
+    /**
+     * @param int $serialize
+     */
+    public function __construct(int $serialize) {
+        $this->serialize = $serialize;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSerialize(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSerialize(): int {
+        if (Serialize::validateSerialize($this->serialize))  {
+            return $this->serialize; /*int*/
+        }
+        throw new Exception('never get to this Serialize::serialize');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialize(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSerialize(): int {
+        if (Serialize::validateSerialize($this->serialize))  {
+            return $this->serialize;
+        }
+        throw new Exception('never get to getSerialize Serialize::serialize');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSerialize(): int {
+        return 31; /*31:serialize*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Serialize::validateSerialize($this->serialize);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'serialize'} = $this->toSerialize();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Serialize
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Serialize {
+        return new Serialize(
+         Serialize::fromSerialize($obj->{'serialize'})
+        );
+    }
+
+    /**
+     * @return Serialize
+     */
+    public static function sample(): Serialize {
+        return new Serialize(
+         Serialize::sampleSerialize()
+        );
+    }
+}
+
+// This is an autogenerated file:Set
+
+class Set {
+    private int $set; // json:set Required
+
+    /**
+     * @param int $set
+     */
+    public function __construct(int $set) {
+        $this->set = $set;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSet(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSet(): int {
+        if (Set::validateSet($this->set))  {
+            return $this->set; /*int*/
+        }
+        throw new Exception('never get to this Set::set');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSet(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSet(): int {
+        if (Set::validateSet($this->set))  {
+            return $this->set;
+        }
+        throw new Exception('never get to getSet Set::set');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSet(): int {
+        return 31; /*31:set*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Set::validateSet($this->set);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'set'} = $this->toSet();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Set
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Set {
+        return new Set(
+         Set::fromSet($obj->{'set'})
+        );
+    }
+
+    /**
+     * @return Set
+     */
+    public static function sample(): Set {
+        return new Set(
+         Set::sampleSet()
+        );
+    }
+}
+
+// This is an autogenerated file:Short
+
+class Short {
+    private int $short; // json:short Required
+
+    /**
+     * @param int $short
+     */
+    public function __construct(int $short) {
+        $this->short = $short;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromShort(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toShort(): int {
+        if (Short::validateShort($this->short))  {
+            return $this->short; /*int*/
+        }
+        throw new Exception('never get to this Short::short');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateShort(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getShort(): int {
+        if (Short::validateShort($this->short))  {
+            return $this->short;
+        }
+        throw new Exception('never get to getShort Short::short');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleShort(): int {
+        return 31; /*31:short*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Short::validateShort($this->short);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'short'} = $this->toShort();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Short
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Short {
+        return new Short(
+         Short::fromShort($obj->{'short'})
+        );
+    }
+
+    /**
+     * @return Short
+     */
+    public static function sample(): Short {
+        return new Short(
+         Short::sampleShort()
+        );
+    }
+}
+
+// This is an autogenerated file:Signed
+
+class Signed {
+    private int $signed; // json:signed Required
+
+    /**
+     * @param int $signed
+     */
+    public function __construct(int $signed) {
+        $this->signed = $signed;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSigned(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSigned(): int {
+        if (Signed::validateSigned($this->signed))  {
+            return $this->signed; /*int*/
+        }
+        throw new Exception('never get to this Signed::signed');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSigned(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSigned(): int {
+        if (Signed::validateSigned($this->signed))  {
+            return $this->signed;
+        }
+        throw new Exception('never get to getSigned Signed::signed');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSigned(): int {
+        return 31; /*31:signed*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Signed::validateSigned($this->signed);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'signed'} = $this->toSigned();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Signed
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Signed {
+        return new Signed(
+         Signed::fromSigned($obj->{'signed'})
+        );
+    }
+
+    /**
+     * @return Signed
+     */
+    public static function sample(): Signed {
+        return new Signed(
+         Signed::sampleSigned()
+        );
+    }
+}
+
+// This is an autogenerated file:Sizeof
+
+class Sizeof {
+    private int $sizeof; // json:sizeof Required
+
+    /**
+     * @param int $sizeof
+     */
+    public function __construct(int $sizeof) {
+        $this->sizeof = $sizeof;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSizeof(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSizeof(): int {
+        if (Sizeof::validateSizeof($this->sizeof))  {
+            return $this->sizeof; /*int*/
+        }
+        throw new Exception('never get to this Sizeof::sizeof');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSizeof(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSizeof(): int {
+        if (Sizeof::validateSizeof($this->sizeof))  {
+            return $this->sizeof;
+        }
+        throw new Exception('never get to getSizeof Sizeof::sizeof');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSizeof(): int {
+        return 31; /*31:sizeof*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sizeof::validateSizeof($this->sizeof);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'sizeof'} = $this->toSizeof();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sizeof
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sizeof {
+        return new Sizeof(
+         Sizeof::fromSizeof($obj->{'sizeof'})
+        );
+    }
+
+    /**
+     * @return Sizeof
+     */
+    public static function sample(): Sizeof {
+        return new Sizeof(
+         Sizeof::sampleSizeof()
+        );
+    }
+}
+
+// This is an autogenerated file:Stackalloc
+
+class Stackalloc {
+    private int $stackalloc; // json:stackalloc Required
+
+    /**
+     * @param int $stackalloc
+     */
+    public function __construct(int $stackalloc) {
+        $this->stackalloc = $stackalloc;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStackalloc(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStackalloc(): int {
+        if (Stackalloc::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc; /*int*/
+        }
+        throw new Exception('never get to this Stackalloc::stackalloc');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStackalloc(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStackalloc(): int {
+        if (Stackalloc::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc;
+        }
+        throw new Exception('never get to getStackalloc Stackalloc::stackalloc');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStackalloc(): int {
+        return 31; /*31:stackalloc*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Stackalloc::validateStackalloc($this->stackalloc);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'stackalloc'} = $this->toStackalloc();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Stackalloc
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Stackalloc {
+        return new Stackalloc(
+         Stackalloc::fromStackalloc($obj->{'stackalloc'})
+        );
+    }
+
+    /**
+     * @return Stackalloc
+     */
+    public static function sample(): Stackalloc {
+        return new Stackalloc(
+         Stackalloc::sampleStackalloc()
+        );
+    }
+}
+
+// This is an autogenerated file:StaticClass
+
+class StaticClass {
+    private int $static; // json:static Required
+
+    /**
+     * @param int $static
+     */
+    public function __construct(int $static) {
+        $this->static = $static;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStatic(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStatic(): int {
+        if (StaticClass::validateStatic($this->static))  {
+            return $this->static; /*int*/
+        }
+        throw new Exception('never get to this StaticClass::static');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStatic(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStatic(): int {
+        if (StaticClass::validateStatic($this->static))  {
+            return $this->static;
+        }
+        throw new Exception('never get to getStatic StaticClass::static');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStatic(): int {
+        return 31; /*31:static*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return StaticClass::validateStatic($this->static);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'static'} = $this->toStatic();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return StaticClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): StaticClass {
+        return new StaticClass(
+         StaticClass::fromStatic($obj->{'static'})
+        );
+    }
+
+    /**
+     * @return StaticClass
+     */
+    public static function sample(): StaticClass {
+        return new StaticClass(
+         StaticClass::sampleStatic()
+        );
+    }
+}
+
+// This is an autogenerated file:StaticAssert
+
+class StaticAssert {
+    private int $staticAssert; // json:static_assert Required
+
+    /**
+     * @param int $staticAssert
+     */
+    public function __construct(int $staticAssert) {
+        $this->staticAssert = $staticAssert;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStaticAssert(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStaticAssert(): int {
+        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert; /*int*/
+        }
+        throw new Exception('never get to this StaticAssert::staticAssert');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStaticAssert(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStaticAssert(): int {
+        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert;
+        }
+        throw new Exception('never get to getStaticAssert StaticAssert::staticAssert');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStaticAssert(): int {
+        return 31; /*31:staticAssert*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return StaticAssert::validateStaticAssert($this->staticAssert);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'static_assert'} = $this->toStaticAssert();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return StaticAssert
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): StaticAssert {
+        return new StaticAssert(
+         StaticAssert::fromStaticAssert($obj->{'static_assert'})
+        );
+    }
+
+    /**
+     * @return StaticAssert
+     */
+    public static function sample(): StaticAssert {
+        return new StaticAssert(
+         StaticAssert::sampleStaticAssert()
+        );
+    }
+}
+
+// This is an autogenerated file:StaticCast
+
+class StaticCast {
+    private int $staticCast; // json:static_cast Required
+
+    /**
+     * @param int $staticCast
+     */
+    public function __construct(int $staticCast) {
+        $this->staticCast = $staticCast;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStaticCast(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStaticCast(): int {
+        if (StaticCast::validateStaticCast($this->staticCast))  {
+            return $this->staticCast; /*int*/
+        }
+        throw new Exception('never get to this StaticCast::staticCast');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStaticCast(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStaticCast(): int {
+        if (StaticCast::validateStaticCast($this->staticCast))  {
+            return $this->staticCast;
+        }
+        throw new Exception('never get to getStaticCast StaticCast::staticCast');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStaticCast(): int {
+        return 31; /*31:staticCast*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return StaticCast::validateStaticCast($this->staticCast);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'static_cast'} = $this->toStaticCast();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return StaticCast
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): StaticCast {
+        return new StaticCast(
+         StaticCast::fromStaticCast($obj->{'static_cast'})
+        );
+    }
+
+    /**
+     * @return StaticCast
+     */
+    public static function sample(): StaticCast {
+        return new StaticCast(
+         StaticCast::sampleStaticCast()
+        );
+    }
+}
+
+// This is an autogenerated file:Strictfp
+
+class Strictfp {
+    private int $strictfp; // json:strictfp Required
+
+    /**
+     * @param int $strictfp
+     */
+    public function __construct(int $strictfp) {
+        $this->strictfp = $strictfp;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStrictfp(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStrictfp(): int {
+        if (Strictfp::validateStrictfp($this->strictfp))  {
+            return $this->strictfp; /*int*/
+        }
+        throw new Exception('never get to this Strictfp::strictfp');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStrictfp(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStrictfp(): int {
+        if (Strictfp::validateStrictfp($this->strictfp))  {
+            return $this->strictfp;
+        }
+        throw new Exception('never get to getStrictfp Strictfp::strictfp');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStrictfp(): int {
+        return 31; /*31:strictfp*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Strictfp::validateStrictfp($this->strictfp);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'strictfp'} = $this->toStrictfp();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Strictfp
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Strictfp {
+        return new Strictfp(
+         Strictfp::fromStrictfp($obj->{'strictfp'})
+        );
+    }
+
+    /**
+     * @return Strictfp
+     */
+    public static function sample(): Strictfp {
+        return new Strictfp(
+         Strictfp::sampleStrictfp()
+        );
+    }
+}
+
+// This is an autogenerated file:StringClass
+
+class StringClass {
+    private int $string; // json:string Required
+
+    /**
+     * @param int $string
+     */
+    public function __construct(int $string) {
+        $this->string = $string;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromString(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toString(): int {
+        if (StringClass::validateString($this->string))  {
+            return $this->string; /*int*/
+        }
+        throw new Exception('never get to this StringClass::string');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateString(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getString(): int {
+        if (StringClass::validateString($this->string))  {
+            return $this->string;
+        }
+        throw new Exception('never get to getString StringClass::string');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleString(): int {
+        return 31; /*31:string*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return StringClass::validateString($this->string);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'string'} = $this->toString();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return StringClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): StringClass {
+        return new StringClass(
+         StringClass::fromString($obj->{'string'})
+        );
+    }
+
+    /**
+     * @return StringClass
+     */
+    public static function sample(): StringClass {
+        return new StringClass(
+         StringClass::sampleString()
+        );
+    }
+}
+
+// This is an autogenerated file:Struct
+
+class Struct {
+    private int $struct; // json:struct Required
+
+    /**
+     * @param int $struct
+     */
+    public function __construct(int $struct) {
+        $this->struct = $struct;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromStruct(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toStruct(): int {
+        if (Struct::validateStruct($this->struct))  {
+            return $this->struct; /*int*/
+        }
+        throw new Exception('never get to this Struct::struct');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStruct(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getStruct(): int {
+        if (Struct::validateStruct($this->struct))  {
+            return $this->struct;
+        }
+        throw new Exception('never get to getStruct Struct::struct');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleStruct(): int {
+        return 31; /*31:struct*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Struct::validateStruct($this->struct);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'struct'} = $this->toStruct();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Struct
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Struct {
+        return new Struct(
+         Struct::fromStruct($obj->{'struct'})
+        );
+    }
+
+    /**
+     * @return Struct
+     */
+    public static function sample(): Struct {
+        return new Struct(
+         Struct::sampleStruct()
+        );
+    }
+}
+
+// This is an autogenerated file:Subscript
+
+class Subscript {
+    private int $subscript; // json:subscript Required
+
+    /**
+     * @param int $subscript
+     */
+    public function __construct(int $subscript) {
+        $this->subscript = $subscript;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSubscript(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSubscript(): int {
+        if (Subscript::validateSubscript($this->subscript))  {
+            return $this->subscript; /*int*/
+        }
+        throw new Exception('never get to this Subscript::subscript');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSubscript(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSubscript(): int {
+        if (Subscript::validateSubscript($this->subscript))  {
+            return $this->subscript;
+        }
+        throw new Exception('never get to getSubscript Subscript::subscript');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSubscript(): int {
+        return 31; /*31:subscript*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Subscript::validateSubscript($this->subscript);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'subscript'} = $this->toSubscript();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Subscript
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Subscript {
+        return new Subscript(
+         Subscript::fromSubscript($obj->{'subscript'})
+        );
+    }
+
+    /**
+     * @return Subscript
+     */
+    public static function sample(): Subscript {
+        return new Subscript(
+         Subscript::sampleSubscript()
+        );
+    }
+}
+
+// This is an autogenerated file:Super
+
+class Super {
+    private int $super; // json:super Required
+
+    /**
+     * @param int $super
+     */
+    public function __construct(int $super) {
+        $this->super = $super;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSuper(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSuper(): int {
+        if (Super::validateSuper($this->super))  {
+            return $this->super; /*int*/
+        }
+        throw new Exception('never get to this Super::super');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSuper(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSuper(): int {
+        if (Super::validateSuper($this->super))  {
+            return $this->super;
+        }
+        throw new Exception('never get to getSuper Super::super');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSuper(): int {
+        return 31; /*31:super*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Super::validateSuper($this->super);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'super'} = $this->toSuper();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Super
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Super {
+        return new Super(
+         Super::fromSuper($obj->{'super'})
+        );
+    }
+
+    /**
+     * @return Super
+     */
+    public static function sample(): Super {
+        return new Super(
+         Super::sampleSuper()
+        );
+    }
+}
+
+// This is an autogenerated file:SwitchClass
+
+class SwitchClass {
+    private int $switch; // json:switch Required
+
+    /**
+     * @param int $switch
+     */
+    public function __construct(int $switch) {
+        $this->switch = $switch;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSwitch(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSwitch(): int {
+        if (SwitchClass::validateSwitch($this->switch))  {
+            return $this->switch; /*int*/
+        }
+        throw new Exception('never get to this SwitchClass::switch');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSwitch(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSwitch(): int {
+        if (SwitchClass::validateSwitch($this->switch))  {
+            return $this->switch;
+        }
+        throw new Exception('never get to getSwitch SwitchClass::switch');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSwitch(): int {
+        return 31; /*31:switch*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return SwitchClass::validateSwitch($this->switch);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'switch'} = $this->toSwitch();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SwitchClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SwitchClass {
+        return new SwitchClass(
+         SwitchClass::fromSwitch($obj->{'switch'})
+        );
+    }
+
+    /**
+     * @return SwitchClass
+     */
+    public static function sample(): SwitchClass {
+        return new SwitchClass(
+         SwitchClass::sampleSwitch()
+        );
+    }
+}
+
+// This is an autogenerated file:Symbol
+
+class Symbol {
+    private int $symbol; // json:symbol Required
+
+    /**
+     * @param int $symbol
+     */
+    public function __construct(int $symbol) {
+        $this->symbol = $symbol;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSymbol(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSymbol(): int {
+        if (Symbol::validateSymbol($this->symbol))  {
+            return $this->symbol; /*int*/
+        }
+        throw new Exception('never get to this Symbol::symbol');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSymbol(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSymbol(): int {
+        if (Symbol::validateSymbol($this->symbol))  {
+            return $this->symbol;
+        }
+        throw new Exception('never get to getSymbol Symbol::symbol');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSymbol(): int {
+        return 31; /*31:symbol*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Symbol::validateSymbol($this->symbol);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'symbol'} = $this->toSymbol();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Symbol
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Symbol {
+        return new Symbol(
+         Symbol::fromSymbol($obj->{'symbol'})
+        );
+    }
+
+    /**
+     * @return Symbol
+     */
+    public static function sample(): Symbol {
+        return new Symbol(
+         Symbol::sampleSymbol()
+        );
+    }
+}
+
+// This is an autogenerated file:Synchronized
+
+class Synchronized {
+    private int $synchronized; // json:synchronized Required
+
+    /**
+     * @param int $synchronized
+     */
+    public function __construct(int $synchronized) {
+        $this->synchronized = $synchronized;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSynchronized(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSynchronized(): int {
+        if (Synchronized::validateSynchronized($this->synchronized))  {
+            return $this->synchronized; /*int*/
+        }
+        throw new Exception('never get to this Synchronized::synchronized');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSynchronized(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSynchronized(): int {
+        if (Synchronized::validateSynchronized($this->synchronized))  {
+            return $this->synchronized;
+        }
+        throw new Exception('never get to getSynchronized Synchronized::synchronized');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSynchronized(): int {
+        return 31; /*31:synchronized*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Synchronized::validateSynchronized($this->synchronized);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'synchronized'} = $this->toSynchronized();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Synchronized
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Synchronized {
+        return new Synchronized(
+         Synchronized::fromSynchronized($obj->{'synchronized'})
+        );
+    }
+
+    /**
+     * @return Synchronized
+     */
+    public static function sample(): Synchronized {
+        return new Synchronized(
+         Synchronized::sampleSynchronized()
+        );
+    }
+}
+
+// This is an autogenerated file:System
+
+class System {
+    private int $system; // json:system Required
+
+    /**
+     * @param int $system
+     */
+    public function __construct(int $system) {
+        $this->system = $system;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSystem(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSystem(): int {
+        if (System::validateSystem($this->system))  {
+            return $this->system; /*int*/
+        }
+        throw new Exception('never get to this System::system');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSystem(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSystem(): int {
+        if (System::validateSystem($this->system))  {
+            return $this->system;
+        }
+        throw new Exception('never get to getSystem System::system');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSystem(): int {
+        return 31; /*31:system*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return System::validateSystem($this->system);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'system'} = $this->toSystem();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return System
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): System {
+        return new System(
+         System::fromSystem($obj->{'system'})
+        );
+    }
+
+    /**
+     * @return System
+     */
+    public static function sample(): System {
+        return new System(
+         System::sampleSystem()
+        );
+    }
+}
+
+// This is an autogenerated file:Template
+
+class Template {
+    private int $template; // json:template Required
+
+    /**
+     * @param int $template
+     */
+    public function __construct(int $template) {
+        $this->template = $template;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTemplate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTemplate(): int {
+        if (Template::validateTemplate($this->template))  {
+            return $this->template; /*int*/
+        }
+        throw new Exception('never get to this Template::template');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTemplate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTemplate(): int {
+        if (Template::validateTemplate($this->template))  {
+            return $this->template;
+        }
+        throw new Exception('never get to getTemplate Template::template');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTemplate(): int {
+        return 31; /*31:template*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Template::validateTemplate($this->template);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'template'} = $this->toTemplate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Template
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Template {
+        return new Template(
+         Template::fromTemplate($obj->{'template'})
+        );
+    }
+
+    /**
+     * @return Template
+     */
+    public static function sample(): Template {
+        return new Template(
+         Template::sampleTemplate()
+        );
+    }
+}
+
+// This is an autogenerated file:Then
+
+class Then {
+    private int $then; // json:then Required
+
+    /**
+     * @param int $then
+     */
+    public function __construct(int $then) {
+        $this->then = $then;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThen(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThen(): int {
+        if (Then::validateThen($this->then))  {
+            return $this->then; /*int*/
+        }
+        throw new Exception('never get to this Then::then');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThen(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getThen(): int {
+        if (Then::validateThen($this->then))  {
+            return $this->then;
+        }
+        throw new Exception('never get to getThen Then::then');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleThen(): int {
+        return 31; /*31:then*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Then::validateThen($this->then);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'then'} = $this->toThen();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Then
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Then {
+        return new Then(
+         Then::fromThen($obj->{'then'})
+        );
+    }
+
+    /**
+     * @return Then
+     */
+    public static function sample(): Then {
+        return new Then(
+         Then::sampleThen()
+        );
+    }
+}
+
+// This is an autogenerated file:ThreadLocal
+
+class ThreadLocal {
+    private int $threadLocal; // json:thread_local Required
+
+    /**
+     * @param int $threadLocal
+     */
+    public function __construct(int $threadLocal) {
+        $this->threadLocal = $threadLocal;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThreadLocal(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThreadLocal(): int {
+        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal; /*int*/
+        }
+        throw new Exception('never get to this ThreadLocal::threadLocal');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThreadLocal(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getThreadLocal(): int {
+        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal;
+        }
+        throw new Exception('never get to getThreadLocal ThreadLocal::threadLocal');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleThreadLocal(): int {
+        return 31; /*31:threadLocal*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ThreadLocal::validateThreadLocal($this->threadLocal);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'thread_local'} = $this->toThreadLocal();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ThreadLocal
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ThreadLocal {
+        return new ThreadLocal(
+         ThreadLocal::fromThreadLocal($obj->{'thread_local'})
+        );
+    }
+
+    /**
+     * @return ThreadLocal
+     */
+    public static function sample(): ThreadLocal {
+        return new ThreadLocal(
+         ThreadLocal::sampleThreadLocal()
+        );
+    }
+}
+
+// This is an autogenerated file:ThrowClass
+
+class ThrowClass {
+    private int $throw; // json:throw Required
+
+    /**
+     * @param int $throw
+     */
+    public function __construct(int $throw) {
+        $this->throw = $throw;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThrow(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThrow(): int {
+        if (ThrowClass::validateThrow($this->throw))  {
+            return $this->throw; /*int*/
+        }
+        throw new Exception('never get to this ThrowClass::throw');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThrow(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getThrow(): int {
+        if (ThrowClass::validateThrow($this->throw))  {
+            return $this->throw;
+        }
+        throw new Exception('never get to getThrow ThrowClass::throw');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleThrow(): int {
+        return 31; /*31:throw*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ThrowClass::validateThrow($this->throw);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'throw'} = $this->toThrow();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ThrowClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ThrowClass {
+        return new ThrowClass(
+         ThrowClass::fromThrow($obj->{'throw'})
+        );
+    }
+
+    /**
+     * @return ThrowClass
+     */
+    public static function sample(): ThrowClass {
+        return new ThrowClass(
+         ThrowClass::sampleThrow()
+        );
+    }
+}
+
+// This is an autogenerated file:Throws
+
+class Throws {
+    private int $throws; // json:throws Required
+
+    /**
+     * @param int $throws
+     */
+    public function __construct(int $throws) {
+        $this->throws = $throws;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThrows(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThrows(): int {
+        if (Throws::validateThrows($this->throws))  {
+            return $this->throws; /*int*/
+        }
+        throw new Exception('never get to this Throws::throws');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThrows(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getThrows(): int {
+        if (Throws::validateThrows($this->throws))  {
+            return $this->throws;
+        }
+        throw new Exception('never get to getThrows Throws::throws');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleThrows(): int {
+        return 31; /*31:throws*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Throws::validateThrows($this->throws);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'throws'} = $this->toThrows();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Throws
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Throws {
+        return new Throws(
+         Throws::fromThrows($obj->{'throws'})
+        );
+    }
+
+    /**
+     * @return Throws
+     */
+    public static function sample(): Throws {
+        return new Throws(
+         Throws::sampleThrows()
+        );
+    }
+}
+
+// This is an autogenerated file:ToJSON
+
+class ToJSON {
+    private int $toJSON; // json:to_json Required
+
+    /**
+     * @param int $toJSON
+     */
+    public function __construct(int $toJSON) {
+        $this->toJSON = $toJSON;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromToJSON(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toToJSON(): int {
+        if (ToJSON::validateToJSON($this->toJSON))  {
+            return $this->toJSON; /*int*/
+        }
+        throw new Exception('never get to this ToJSON::toJSON');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateToJSON(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getToJSON(): int {
+        if (ToJSON::validateToJSON($this->toJSON))  {
+            return $this->toJSON;
+        }
+        throw new Exception('never get to getToJSON ToJSON::toJSON');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleToJSON(): int {
+        return 31; /*31:toJSON*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ToJSON::validateToJSON($this->toJSON);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'to_json'} = $this->toToJSON();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ToJSON
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ToJSON {
+        return new ToJSON(
+         ToJSON::fromToJSON($obj->{'to_json'})
+        );
+    }
+
+    /**
+     * @return ToJSON
+     */
+    public static function sample(): ToJSON {
+        return new ToJSON(
+         ToJSON::sampleToJSON()
+        );
+    }
+}
+
+// This is an autogenerated file:TopLevelClass
+
+class TopLevelClass {
+    private int $topLevel; // json:top_level Required
+
+    /**
+     * @param int $topLevel
+     */
+    public function __construct(int $topLevel) {
+        $this->topLevel = $topLevel;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTopLevel(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTopLevel(): int {
+        if (TopLevelClass::validateTopLevel($this->topLevel))  {
+            return $this->topLevel; /*int*/
+        }
+        throw new Exception('never get to this TopLevelClass::topLevel');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTopLevel(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTopLevel(): int {
+        if (TopLevelClass::validateTopLevel($this->topLevel))  {
+            return $this->topLevel;
+        }
+        throw new Exception('never get to getTopLevel TopLevelClass::topLevel');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTopLevel(): int {
+        return 31; /*31:topLevel*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TopLevelClass::validateTopLevel($this->topLevel);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'top_level'} = $this->toTopLevel();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TopLevelClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TopLevelClass {
+        return new TopLevelClass(
+         TopLevelClass::fromTopLevel($obj->{'top_level'})
+        );
+    }
+
+    /**
+     * @return TopLevelClass
+     */
+    public static function sample(): TopLevelClass {
+        return new TopLevelClass(
+         TopLevelClass::sampleTopLevel()
+        );
+    }
+}
+
+// This is an autogenerated file:Transient
+
+class Transient {
+    private int $transient; // json:transient Required
+
+    /**
+     * @param int $transient
+     */
+    public function __construct(int $transient) {
+        $this->transient = $transient;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTransient(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTransient(): int {
+        if (Transient::validateTransient($this->transient))  {
+            return $this->transient; /*int*/
+        }
+        throw new Exception('never get to this Transient::transient');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTransient(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTransient(): int {
+        if (Transient::validateTransient($this->transient))  {
+            return $this->transient;
+        }
+        throw new Exception('never get to getTransient Transient::transient');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTransient(): int {
+        return 31; /*31:transient*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Transient::validateTransient($this->transient);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'transient'} = $this->toTransient();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Transient
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Transient {
+        return new Transient(
+         Transient::fromTransient($obj->{'transient'})
+        );
+    }
+
+    /**
+     * @return Transient
+     */
+    public static function sample(): Transient {
+        return new Transient(
+         Transient::sampleTransient()
+        );
+    }
+}
+
+// This is an autogenerated file:TrueClass
+
+class TrueClass {
+    private int $true; // json:True Required
+
+    /**
+     * @param int $true
+     */
+    public function __construct(int $true) {
+        $this->true = $true;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTrue(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTrue(): int {
+        if (TrueClass::validateTrue($this->true))  {
+            return $this->true; /*int*/
+        }
+        throw new Exception('never get to this TrueClass::true');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTrue(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTrue(): int {
+        if (TrueClass::validateTrue($this->true))  {
+            return $this->true;
+        }
+        throw new Exception('never get to getTrue TrueClass::true');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTrue(): int {
+        return 31; /*31:true*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TrueClass::validateTrue($this->true);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'True'} = $this->toTrue();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TrueClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TrueClass {
+        return new TrueClass(
+         TrueClass::fromTrue($obj->{'True'})
+        );
+    }
+
+    /**
+     * @return TrueClass
+     */
+    public static function sample(): TrueClass {
+        return new TrueClass(
+         TrueClass::sampleTrue()
+        );
+    }
+}
+
+// This is an autogenerated file:TryClass
+
+class TryClass {
+    private int $try; // json:try Required
+
+    /**
+     * @param int $try
+     */
+    public function __construct(int $try) {
+        $this->try = $try;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTry(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTry(): int {
+        if (TryClass::validateTry($this->try))  {
+            return $this->try; /*int*/
+        }
+        throw new Exception('never get to this TryClass::try');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTry(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTry(): int {
+        if (TryClass::validateTry($this->try))  {
+            return $this->try;
+        }
+        throw new Exception('never get to getTry TryClass::try');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTry(): int {
+        return 31; /*31:try*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TryClass::validateTry($this->try);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'try'} = $this->toTry();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TryClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TryClass {
+        return new TryClass(
+         TryClass::fromTry($obj->{'try'})
+        );
+    }
+
+    /**
+     * @return TryClass
+     */
+    public static function sample(): TryClass {
+        return new TryClass(
+         TryClass::sampleTry()
+        );
+    }
+}
+
+// This is an autogenerated file:Type
+
+class Type {
+    private int $type; // json:Type Required
+
+    /**
+     * @param int $type
+     */
+    public function __construct(int $type) {
+        $this->type = $type;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromType(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toType(): int {
+        if (Type::validateType($this->type))  {
+            return $this->type; /*int*/
+        }
+        throw new Exception('never get to this Type::type');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateType(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getType(): int {
+        if (Type::validateType($this->type))  {
+            return $this->type;
+        }
+        throw new Exception('never get to getType Type::type');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleType(): int {
+        return 31; /*31:type*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Type::validateType($this->type);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Type'} = $this->toType();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Type
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Type {
+        return new Type(
+         Type::fromType($obj->{'Type'})
+        );
+    }
+
+    /**
+     * @return Type
+     */
+    public static function sample(): Type {
+        return new Type(
+         Type::sampleType()
+        );
+    }
+}
+
+// This is an autogenerated file:Typealias
+
+class Typealias {
+    private int $typealias; // json:typealias Required
+
+    /**
+     * @param int $typealias
+     */
+    public function __construct(int $typealias) {
+        $this->typealias = $typealias;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTypealias(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTypealias(): int {
+        if (Typealias::validateTypealias($this->typealias))  {
+            return $this->typealias; /*int*/
+        }
+        throw new Exception('never get to this Typealias::typealias');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypealias(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTypealias(): int {
+        if (Typealias::validateTypealias($this->typealias))  {
+            return $this->typealias;
+        }
+        throw new Exception('never get to getTypealias Typealias::typealias');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTypealias(): int {
+        return 31; /*31:typealias*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Typealias::validateTypealias($this->typealias);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'typealias'} = $this->toTypealias();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Typealias
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Typealias {
+        return new Typealias(
+         Typealias::fromTypealias($obj->{'typealias'})
+        );
+    }
+
+    /**
+     * @return Typealias
+     */
+    public static function sample(): Typealias {
+        return new Typealias(
+         Typealias::sampleTypealias()
+        );
+    }
+}
+
+// This is an autogenerated file:Typedef
+
+class Typedef {
+    private int $typedef; // json:typedef Required
+
+    /**
+     * @param int $typedef
+     */
+    public function __construct(int $typedef) {
+        $this->typedef = $typedef;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTypedef(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTypedef(): int {
+        if (Typedef::validateTypedef($this->typedef))  {
+            return $this->typedef; /*int*/
+        }
+        throw new Exception('never get to this Typedef::typedef');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypedef(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTypedef(): int {
+        if (Typedef::validateTypedef($this->typedef))  {
+            return $this->typedef;
+        }
+        throw new Exception('never get to getTypedef Typedef::typedef');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTypedef(): int {
+        return 31; /*31:typedef*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Typedef::validateTypedef($this->typedef);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'typedef'} = $this->toTypedef();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Typedef
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Typedef {
+        return new Typedef(
+         Typedef::fromTypedef($obj->{'typedef'})
+        );
+    }
+
+    /**
+     * @return Typedef
+     */
+    public static function sample(): Typedef {
+        return new Typedef(
+         Typedef::sampleTypedef()
+        );
+    }
+}
+
+// This is an autogenerated file:Typeid
+
+class Typeid {
+    private int $typeid; // json:typeid Required
+
+    /**
+     * @param int $typeid
+     */
+    public function __construct(int $typeid) {
+        $this->typeid = $typeid;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTypeid(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTypeid(): int {
+        if (Typeid::validateTypeid($this->typeid))  {
+            return $this->typeid; /*int*/
+        }
+        throw new Exception('never get to this Typeid::typeid');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypeid(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTypeid(): int {
+        if (Typeid::validateTypeid($this->typeid))  {
+            return $this->typeid;
+        }
+        throw new Exception('never get to getTypeid Typeid::typeid');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTypeid(): int {
+        return 31; /*31:typeid*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Typeid::validateTypeid($this->typeid);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'typeid'} = $this->toTypeid();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Typeid
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Typeid {
+        return new Typeid(
+         Typeid::fromTypeid($obj->{'typeid'})
+        );
+    }
+
+    /**
+     * @return Typeid
+     */
+    public static function sample(): Typeid {
+        return new Typeid(
+         Typeid::sampleTypeid()
+        );
+    }
+}
+
+// This is an autogenerated file:Typename
+
+class Typename {
+    private int $typename; // json:typename Required
+
+    /**
+     * @param int $typename
+     */
+    public function __construct(int $typename) {
+        $this->typename = $typename;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTypename(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTypename(): int {
+        if (Typename::validateTypename($this->typename))  {
+            return $this->typename; /*int*/
+        }
+        throw new Exception('never get to this Typename::typename');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypename(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTypename(): int {
+        if (Typename::validateTypename($this->typename))  {
+            return $this->typename;
+        }
+        throw new Exception('never get to getTypename Typename::typename');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTypename(): int {
+        return 31; /*31:typename*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Typename::validateTypename($this->typename);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'typename'} = $this->toTypename();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Typename
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Typename {
+        return new Typename(
+         Typename::fromTypename($obj->{'typename'})
+        );
+    }
+
+    /**
+     * @return Typename
+     */
+    public static function sample(): Typename {
+        return new Typename(
+         Typename::sampleTypename()
+        );
+    }
+}
+
+// This is an autogenerated file:Typeof
+
+class Typeof {
+    private int $typeof; // json:typeof Required
+
+    /**
+     * @param int $typeof
+     */
+    public function __construct(int $typeof) {
+        $this->typeof = $typeof;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTypeof(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTypeof(): int {
+        if (Typeof::validateTypeof($this->typeof))  {
+            return $this->typeof; /*int*/
+        }
+        throw new Exception('never get to this Typeof::typeof');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTypeof(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTypeof(): int {
+        if (Typeof::validateTypeof($this->typeof))  {
+            return $this->typeof;
+        }
+        throw new Exception('never get to getTypeof Typeof::typeof');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTypeof(): int {
+        return 31; /*31:typeof*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Typeof::validateTypeof($this->typeof);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'typeof'} = $this->toTypeof();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Typeof
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Typeof {
+        return new Typeof(
+         Typeof::fromTypeof($obj->{'typeof'})
+        );
+    }
+
+    /**
+     * @return Typeof
+     */
+    public static function sample(): Typeof {
+        return new Typeof(
+         Typeof::sampleTypeof()
+        );
+    }
+}
+
+// This is an autogenerated file:Uint
+
+class Uint {
+    private int $uint; // json:uint Required
+
+    /**
+     * @param int $uint
+     */
+    public function __construct(int $uint) {
+        $this->uint = $uint;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUint(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUint(): int {
+        if (Uint::validateUint($this->uint))  {
+            return $this->uint; /*int*/
+        }
+        throw new Exception('never get to this Uint::uint');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUint(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUint(): int {
+        if (Uint::validateUint($this->uint))  {
+            return $this->uint;
+        }
+        throw new Exception('never get to getUint Uint::uint');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUint(): int {
+        return 31; /*31:uint*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Uint::validateUint($this->uint);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'uint'} = $this->toUint();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Uint
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Uint {
+        return new Uint(
+         Uint::fromUint($obj->{'uint'})
+        );
+    }
+
+    /**
+     * @return Uint
+     */
+    public static function sample(): Uint {
+        return new Uint(
+         Uint::sampleUint()
+        );
+    }
+}
+
+// This is an autogenerated file:Ulong
+
+class Ulong {
+    private int $ulong; // json:ulong Required
+
+    /**
+     * @param int $ulong
+     */
+    public function __construct(int $ulong) {
+        $this->ulong = $ulong;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUlong(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUlong(): int {
+        if (Ulong::validateUlong($this->ulong))  {
+            return $this->ulong; /*int*/
+        }
+        throw new Exception('never get to this Ulong::ulong');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUlong(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUlong(): int {
+        if (Ulong::validateUlong($this->ulong))  {
+            return $this->ulong;
+        }
+        throw new Exception('never get to getUlong Ulong::ulong');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUlong(): int {
+        return 31; /*31:ulong*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Ulong::validateUlong($this->ulong);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'ulong'} = $this->toUlong();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Ulong
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Ulong {
+        return new Ulong(
+         Ulong::fromUlong($obj->{'ulong'})
+        );
+    }
+
+    /**
+     * @return Ulong
+     */
+    public static function sample(): Ulong {
+        return new Ulong(
+         Ulong::sampleUlong()
+        );
+    }
+}
+
+// This is an autogenerated file:Unchecked
+
+class Unchecked {
+    private int $unchecked; // json:unchecked Required
+
+    /**
+     * @param int $unchecked
+     */
+    public function __construct(int $unchecked) {
+        $this->unchecked = $unchecked;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUnchecked(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked; /*int*/
+        }
+        throw new Exception('never get to this Unchecked::unchecked');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnchecked(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked;
+        }
+        throw new Exception('never get to getUnchecked Unchecked::unchecked');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUnchecked(): int {
+        return 31; /*31:unchecked*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Unchecked::validateUnchecked($this->unchecked);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'unchecked'} = $this->toUnchecked();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Unchecked
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Unchecked {
+        return new Unchecked(
+         Unchecked::fromUnchecked($obj->{'unchecked'})
+        );
+    }
+
+    /**
+     * @return Unchecked
+     */
+    public static function sample(): Unchecked {
+        return new Unchecked(
+         Unchecked::sampleUnchecked()
+        );
+    }
+}
+
+// This is an autogenerated file:Undefined
+
+class Undefined {
+    private int $undefined; // json:undefined Required
+
+    /**
+     * @param int $undefined
+     */
+    public function __construct(int $undefined) {
+        $this->undefined = $undefined;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUndefined(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined; /*int*/
+        }
+        throw new Exception('never get to this Undefined::undefined');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUndefined(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined;
+        }
+        throw new Exception('never get to getUndefined Undefined::undefined');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUndefined(): int {
+        return 31; /*31:undefined*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Undefined::validateUndefined($this->undefined);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'undefined'} = $this->toUndefined();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Undefined
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Undefined {
+        return new Undefined(
+         Undefined::fromUndefined($obj->{'undefined'})
+        );
+    }
+
+    /**
+     * @return Undefined
+     */
+    public static function sample(): Undefined {
+        return new Undefined(
+         Undefined::sampleUndefined()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj5
+
+class Obj5 {
+    private int $dummy; // json:dummy Required
+    private Union $union; // json:union Required
+    private Unowned $unowned; // json:unowned Required
+    private Unsafe $unsafe; // json:unsafe Required
+    private Unsigned $unsigned; // json:unsigned Required
+    private Ushort $ushort; // json:ushort Required
+    private Using $using; // json:using Required
+    private 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 Union $union
+     * @param Unowned $unowned
+     * @param Unsafe $unsafe
+     * @param Unsigned $unsigned
+     * @param Ushort $ushort
+     * @param Using $using
+     * @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, Union $union, Unowned $unowned, Unsafe $unsafe, Unsigned $unsigned, Ushort $ushort, Using $using, 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->union = $union;
+        $this->unowned = $unowned;
+        $this->unsafe = $unsafe;
+        $this->unsigned = $unsigned;
+        $this->ushort = $ushort;
+        $this->using = $using;
+        $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 (Obj5::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
+        }
+        throw new Exception('never get to this Obj5::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 (Obj5::validateDummy($this->dummy))  {
+            return $this->dummy;
+        }
+        throw new Exception('never get to getDummy Obj5::dummy');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Union
+     */
+    public static function fromUnion(stdClass $value): Union {
+        return Union::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUnion(): stdClass {
+        if (Obj5::validateUnion($this->union))  {
+            return $this->union->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::union');
+    }
+
+    /**
+     * @param Union
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnion(Union $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Union
+     */
+    public function getUnion(): Union {
+        if (Obj5::validateUnion($this->union))  {
+            return $this->union;
+        }
+        throw new Exception('never get to getUnion Obj5::union');
+    }
+
+    /**
+     * @return Union
+     */
+    public static function sampleUnion(): Union {
+        return Union::sample(); /*32:union*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Unowned
+     */
+    public static function fromUnowned(stdClass $value): Unowned {
+        return Unowned::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUnowned(): stdClass {
+        if (Obj5::validateUnowned($this->unowned))  {
+            return $this->unowned->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::unowned');
+    }
+
+    /**
+     * @param Unowned
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnowned(Unowned $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Unowned
+     */
+    public function getUnowned(): Unowned {
+        if (Obj5::validateUnowned($this->unowned))  {
+            return $this->unowned;
+        }
+        throw new Exception('never get to getUnowned Obj5::unowned');
+    }
+
+    /**
+     * @return Unowned
+     */
+    public static function sampleUnowned(): Unowned {
+        return Unowned::sample(); /*33: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(); /*34:unsafe*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Unsigned
+     */
+    public static function fromUnsigned(stdClass $value): Unsigned {
+        return Unsigned::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUnsigned(): stdClass {
+        if (Obj5::validateUnsigned($this->unsigned))  {
+            return $this->unsigned->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::unsigned');
+    }
+
+    /**
+     * @param Unsigned
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnsigned(Unsigned $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Unsigned
+     */
+    public function getUnsigned(): Unsigned {
+        if (Obj5::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
+        }
+        throw new Exception('never get to getUnsigned Obj5::unsigned');
+    }
+
+    /**
+     * @return Unsigned
+     */
+    public static function sampleUnsigned(): Unsigned {
+        return Unsigned::sample(); /*35:unsigned*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Ushort
+     */
+    public static function fromUshort(stdClass $value): Ushort {
+        return Ushort::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUshort(): stdClass {
+        if (Obj5::validateUshort($this->ushort))  {
+            return $this->ushort->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::ushort');
+    }
+
+    /**
+     * @param Ushort
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUshort(Ushort $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Ushort
+     */
+    public function getUshort(): Ushort {
+        if (Obj5::validateUshort($this->ushort))  {
+            return $this->ushort;
+        }
+        throw new Exception('never get to getUshort Obj5::ushort');
+    }
+
+    /**
+     * @return Ushort
+     */
+    public static function sampleUshort(): Ushort {
+        return Ushort::sample(); /*36:ushort*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Using
+     */
+    public static function fromUsing(stdClass $value): Using {
+        return Using::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUsing(): stdClass {
+        if (Obj5::validateUsing($this->using))  {
+            return $this->using->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::using');
+    }
+
+    /**
+     * @param Using
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUsing(Using $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Using
+     */
+    public function getUsing(): Using {
+        if (Obj5::validateUsing($this->using))  {
+            return $this->using;
+        }
+        throw new Exception('never get to getUsing Obj5::using');
+    }
+
+    /**
+     * @return Using
+     */
+    public static function sampleUsing(): Using {
+        return Using::sample(); /*37:using*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return VarClass
+     */
+    public static function fromVar(stdClass $value): VarClass {
+        return VarClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toVar(): stdClass {
+        if (Obj5::validateVar($this->var))  {
+            return $this->var->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::var');
+    }
+
+    /**
+     * @param VarClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVar(VarClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return VarClass
+     */
+    public function getVar(): VarClass {
+        if (Obj5::validateVar($this->var))  {
+            return $this->var;
+        }
+        throw new Exception('never get to getVar Obj5::var');
+    }
+
+    /**
+     * @return VarClass
+     */
+    public static function sampleVar(): VarClass {
+        return VarClass::sample(); /*38:var*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Virtual
+     */
+    public static function fromVirtual(stdClass $value): Virtual {
+        return Virtual::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toVirtual(): stdClass {
+        if (Obj5::validateVirtual($this->virtual))  {
+            return $this->virtual->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::virtual');
+    }
+
+    /**
+     * @param Virtual
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVirtual(Virtual $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Virtual
+     */
+    public function getVirtual(): Virtual {
+        if (Obj5::validateVirtual($this->virtual))  {
+            return $this->virtual;
+        }
+        throw new Exception('never get to getVirtual Obj5::virtual');
+    }
+
+    /**
+     * @return Virtual
+     */
+    public static function sampleVirtual(): Virtual {
+        return Virtual::sample(); /*39:virtual*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return VoidClass
+     */
+    public static function fromVoid(stdClass $value): VoidClass {
+        return VoidClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toVoid(): stdClass {
+        if (Obj5::validateVoid($this->void))  {
+            return $this->void->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::void');
+    }
+
+    /**
+     * @param VoidClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVoid(VoidClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return VoidClass
+     */
+    public function getVoid(): VoidClass {
+        if (Obj5::validateVoid($this->void))  {
+            return $this->void;
+        }
+        throw new Exception('never get to getVoid Obj5::void');
+    }
+
+    /**
+     * @return VoidClass
+     */
+    public static function sampleVoid(): VoidClass {
+        return VoidClass::sample(); /*40:void*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Volatile
+     */
+    public static function fromVolatile(stdClass $value): Volatile {
+        return Volatile::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toVolatile(): stdClass {
+        if (Obj5::validateVolatile($this->volatile))  {
+            return $this->volatile->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::volatile');
+    }
+
+    /**
+     * @param Volatile
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVolatile(Volatile $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Volatile
+     */
+    public function getVolatile(): Volatile {
+        if (Obj5::validateVolatile($this->volatile))  {
+            return $this->volatile;
+        }
+        throw new Exception('never get to getVolatile Obj5::volatile');
+    }
+
+    /**
+     * @return Volatile
+     */
+    public static function sampleVolatile(): Volatile {
+        return Volatile::sample(); /*41:volatile*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return WcharT
+     */
+    public static function fromWcharT(stdClass $value): WcharT {
+        return WcharT::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWcharT(): stdClass {
+        if (Obj5::validateWcharT($this->wcharT))  {
+            return $this->wcharT->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::wcharT');
+    }
+
+    /**
+     * @param WcharT
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWcharT(WcharT $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return WcharT
+     */
+    public function getWcharT(): WcharT {
+        if (Obj5::validateWcharT($this->wcharT))  {
+            return $this->wcharT;
+        }
+        throw new Exception('never get to getWcharT Obj5::wcharT');
+    }
+
+    /**
+     * @return WcharT
+     */
+    public static function sampleWcharT(): WcharT {
+        return WcharT::sample(); /*42:wcharT*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Weak
+     */
+    public static function fromWeak(stdClass $value): Weak {
+        return Weak::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWeak(): stdClass {
+        if (Obj5::validateWeak($this->weak))  {
+            return $this->weak->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::weak');
+    }
+
+    /**
+     * @param Weak
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWeak(Weak $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Weak
+     */
+    public function getWeak(): Weak {
+        if (Obj5::validateWeak($this->weak))  {
+            return $this->weak;
+        }
+        throw new Exception('never get to getWeak Obj5::weak');
+    }
+
+    /**
+     * @return Weak
+     */
+    public static function sampleWeak(): Weak {
+        return Weak::sample(); /*43:weak*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Where
+     */
+    public static function fromWhere(stdClass $value): Where {
+        return Where::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWhere(): stdClass {
+        if (Obj5::validateWhere($this->where))  {
+            return $this->where->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::where');
+    }
+
+    /**
+     * @param Where
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWhere(Where $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Where
+     */
+    public function getWhere(): Where {
+        if (Obj5::validateWhere($this->where))  {
+            return $this->where;
+        }
+        throw new Exception('never get to getWhere Obj5::where');
+    }
+
+    /**
+     * @return Where
+     */
+    public static function sampleWhere(): Where {
+        return Where::sample(); /*44:where*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return WhileClass
+     */
+    public static function fromWhile(stdClass $value): WhileClass {
+        return WhileClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWhile(): stdClass {
+        if (Obj5::validateWhile($this->while))  {
+            return $this->while->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::while');
+    }
+
+    /**
+     * @param WhileClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWhile(WhileClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return WhileClass
+     */
+    public function getWhile(): WhileClass {
+        if (Obj5::validateWhile($this->while))  {
+            return $this->while;
+        }
+        throw new Exception('never get to getWhile Obj5::while');
+    }
+
+    /**
+     * @return WhileClass
+     */
+    public static function sampleWhile(): WhileClass {
+        return WhileClass::sample(); /*45:while*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return WillSet
+     */
+    public static function fromWillSet(stdClass $value): WillSet {
+        return WillSet::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWillSet(): stdClass {
+        if (Obj5::validateWillSet($this->willSet))  {
+            return $this->willSet->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::willSet');
+    }
+
+    /**
+     * @param WillSet
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWillSet(WillSet $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return WillSet
+     */
+    public function getWillSet(): WillSet {
+        if (Obj5::validateWillSet($this->willSet))  {
+            return $this->willSet;
+        }
+        throw new Exception('never get to getWillSet Obj5::willSet');
+    }
+
+    /**
+     * @return WillSet
+     */
+    public static function sampleWillSet(): WillSet {
+        return WillSet::sample(); /*46:willSet*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return With
+     */
+    public static function fromWith(stdClass $value): With {
+        return With::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWith(): stdClass {
+        if (Obj5::validateWith($this->with))  {
+            return $this->with->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::with');
+    }
+
+    /**
+     * @param With
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWith(With $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return With
+     */
+    public function getWith(): With {
+        if (Obj5::validateWith($this->with))  {
+            return $this->with;
+        }
+        throw new Exception('never get to getWith Obj5::with');
+    }
+
+    /**
+     * @return With
+     */
+    public static function sampleWith(): With {
+        return With::sample(); /*47:with*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return XorClass
+     */
+    public static function fromXor(stdClass $value): XorClass {
+        return XorClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toXor(): stdClass {
+        if (Obj5::validateXor($this->xor))  {
+            return $this->xor->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::xor');
+    }
+
+    /**
+     * @param XorClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateXor(XorClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return XorClass
+     */
+    public function getXor(): XorClass {
+        if (Obj5::validateXor($this->xor))  {
+            return $this->xor;
+        }
+        throw new Exception('never get to getXor Obj5::xor');
+    }
+
+    /**
+     * @return XorClass
+     */
+    public static function sampleXor(): XorClass {
+        return XorClass::sample(); /*48:xor*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return XorEq
+     */
+    public static function fromXorEq(stdClass $value): XorEq {
+        return XorEq::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toXorEq(): stdClass {
+        if (Obj5::validateXorEq($this->xorEq))  {
+            return $this->xorEq->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::xorEq');
+    }
+
+    /**
+     * @param XorEq
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateXorEq(XorEq $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return XorEq
+     */
+    public function getXorEq(): XorEq {
+        if (Obj5::validateXorEq($this->xorEq))  {
+            return $this->xorEq;
+        }
+        throw new Exception('never get to getXorEq Obj5::xorEq');
+    }
+
+    /**
+     * @return XorEq
+     */
+    public static function sampleXorEq(): XorEq {
+        return XorEq::sample(); /*49:xorEq*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Yes
+     */
+    public static function fromYes(stdClass $value): Yes {
+        return Yes::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toYes(): stdClass {
+        if (Obj5::validateYes($this->yes))  {
+            return $this->yes->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::yes');
+    }
+
+    /**
+     * @param Yes
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateYes(Yes $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Yes
+     */
+    public function getYes(): Yes {
+        if (Obj5::validateYes($this->yes))  {
+            return $this->yes;
+        }
+        throw new Exception('never get to getYes Obj5::yes');
+    }
+
+    /**
+     * @return Yes
+     */
+    public static function sampleYes(): Yes {
+        return Yes::sample(); /*50: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 (Obj5::validateYield($this->yield))  {
+            return $this->yield->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::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 (Obj5::validateYield($this->yield))  {
+            return $this->yield;
+        }
+        throw new Exception('never get to getYield Obj5::yield');
+    }
+
+    /**
+     * @return YieldClass
+     */
+    public static function sampleYield(): YieldClass {
+        return YieldClass::sample(); /*51:yield*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj5::validateDummy($this->dummy)
+        || Obj5::validateUnion($this->union)
+        || Obj5::validateUnowned($this->unowned)
+        || Obj5::validateUnsafe($this->unsafe)
+        || Obj5::validateUnsigned($this->unsigned)
+        || Obj5::validateUshort($this->ushort)
+        || Obj5::validateUsing($this->using)
+        || Obj5::validateVar($this->var)
+        || Obj5::validateVirtual($this->virtual)
+        || Obj5::validateVoid($this->void)
+        || Obj5::validateVolatile($this->volatile)
+        || Obj5::validateWcharT($this->wcharT)
+        || Obj5::validateWeak($this->weak)
+        || Obj5::validateWhere($this->where)
+        || Obj5::validateWhile($this->while)
+        || Obj5::validateWillSet($this->willSet)
+        || Obj5::validateWith($this->with)
+        || Obj5::validateXor($this->xor)
+        || Obj5::validateXorEq($this->xorEq)
+        || Obj5::validateYes($this->yes)
+        || Obj5::validateYield($this->yield);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'union'} = $this->toUnion();
+        $out->{'unowned'} = $this->toUnowned();
+        $out->{'unsafe'} = $this->toUnsafe();
+        $out->{'unsigned'} = $this->toUnsigned();
+        $out->{'ushort'} = $this->toUshort();
+        $out->{'using'} = $this->toUsing();
+        $out->{'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 Obj5
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj5 {
+        return new Obj5(
+         Obj5::fromDummy($obj->{'dummy'})
+        ,Obj5::fromUnion($obj->{'union'})
+        ,Obj5::fromUnowned($obj->{'unowned'})
+        ,Obj5::fromUnsafe($obj->{'unsafe'})
+        ,Obj5::fromUnsigned($obj->{'unsigned'})
+        ,Obj5::fromUshort($obj->{'ushort'})
+        ,Obj5::fromUsing($obj->{'using'})
+        ,Obj5::fromVar($obj->{'var'})
+        ,Obj5::fromVirtual($obj->{'virtual'})
+        ,Obj5::fromVoid($obj->{'void'})
+        ,Obj5::fromVolatile($obj->{'volatile'})
+        ,Obj5::fromWcharT($obj->{'wchar_t'})
+        ,Obj5::fromWeak($obj->{'weak'})
+        ,Obj5::fromWhere($obj->{'where'})
+        ,Obj5::fromWhile($obj->{'while'})
+        ,Obj5::fromWillSet($obj->{'willSet'})
+        ,Obj5::fromWith($obj->{'with'})
+        ,Obj5::fromXor($obj->{'xor'})
+        ,Obj5::fromXorEq($obj->{'xor_eq'})
+        ,Obj5::fromYes($obj->{'YES'})
+        ,Obj5::fromYield($obj->{'yield'})
+        );
+    }
+
+    /**
+     * @return Obj5
+     */
+    public static function sample(): Obj5 {
+        return new Obj5(
+         Obj5::sampleDummy()
+        ,Obj5::sampleUnion()
+        ,Obj5::sampleUnowned()
+        ,Obj5::sampleUnsafe()
+        ,Obj5::sampleUnsigned()
+        ,Obj5::sampleUshort()
+        ,Obj5::sampleUsing()
+        ,Obj5::sampleVar()
+        ,Obj5::sampleVirtual()
+        ,Obj5::sampleVoid()
+        ,Obj5::sampleVolatile()
+        ,Obj5::sampleWcharT()
+        ,Obj5::sampleWeak()
+        ,Obj5::sampleWhere()
+        ,Obj5::sampleWhile()
+        ,Obj5::sampleWillSet()
+        ,Obj5::sampleWith()
+        ,Obj5::sampleXor()
+        ,Obj5::sampleXorEq()
+        ,Obj5::sampleYes()
+        ,Obj5::sampleYield()
+        );
+    }
+}
+
+// This is an autogenerated file:Union
+
+class Union {
+    private int $union; // json:union Required
+
+    /**
+     * @param int $union
+     */
+    public function __construct(int $union) {
+        $this->union = $union;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUnion(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union; /*int*/
+        }
+        throw new Exception('never get to this Union::union');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnion(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union;
+        }
+        throw new Exception('never get to getUnion Union::union');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUnion(): int {
+        return 31; /*31:union*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Union::validateUnion($this->union);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'union'} = $this->toUnion();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Union
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Union {
+        return new Union(
+         Union::fromUnion($obj->{'union'})
+        );
+    }
+
+    /**
+     * @return Union
+     */
+    public static function sample(): Union {
+        return new Union(
+         Union::sampleUnion()
+        );
+    }
+}
+
+// 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 {
+        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 {
+        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 int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUnsigned(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned; /*int*/
+        }
+        throw new Exception('never get to this Unsigned::unsigned');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnsigned(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
+        }
+        throw new Exception('never get to getUnsigned Unsigned::unsigned');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUnsigned(): int {
+        return 31; /*31:unsigned*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Unsigned::validateUnsigned($this->unsigned);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'unsigned'} = $this->toUnsigned();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Unsigned
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Unsigned {
+        return new Unsigned(
+         Unsigned::fromUnsigned($obj->{'unsigned'})
+        );
+    }
+
+    /**
+     * @return Unsigned
+     */
+    public static function sample(): Unsigned {
+        return new Unsigned(
+         Unsigned::sampleUnsigned()
+        );
+    }
+}
+
+// This is an autogenerated file:Ushort
+
+class Ushort {
+    private int $ushort; // json:ushort Required
+
+    /**
+     * @param int $ushort
+     */
+    public function __construct(int $ushort) {
+        $this->ushort = $ushort;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUshort(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort; /*int*/
+        }
+        throw new Exception('never get to this Ushort::ushort');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUshort(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort;
+        }
+        throw new Exception('never get to getUshort Ushort::ushort');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUshort(): int {
+        return 31; /*31:ushort*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Ushort::validateUshort($this->ushort);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'ushort'} = $this->toUshort();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Ushort
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Ushort {
+        return new Ushort(
+         Ushort::fromUshort($obj->{'ushort'})
+        );
+    }
+
+    /**
+     * @return Ushort
+     */
+    public static function sample(): Ushort {
+        return new Ushort(
+         Ushort::sampleUshort()
+        );
+    }
+}
+
+// This is an autogenerated file:Using
+
+class Using {
+    private int $using; // json:using Required
+
+    /**
+     * @param int $using
+     */
+    public function __construct(int $using) {
+        $this->using = $using;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUsing(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUsing(): int {
+        if (Using::validateUsing($this->using))  {
+            return $this->using; /*int*/
+        }
+        throw new Exception('never get to this Using::using');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUsing(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUsing(): int {
+        if (Using::validateUsing($this->using))  {
+            return $this->using;
+        }
+        throw new Exception('never get to getUsing Using::using');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUsing(): int {
+        return 31; /*31:using*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Using::validateUsing($this->using);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'using'} = $this->toUsing();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Using
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Using {
+        return new Using(
+         Using::fromUsing($obj->{'using'})
+        );
+    }
+
+    /**
+     * @return Using
+     */
+    public static function sample(): Using {
+        return new Using(
+         Using::sampleUsing()
+        );
+    }
+}
+
+// This is an autogenerated file:VarClass
+
+class VarClass {
+    private int $var; // json:var Required
+
+    /**
+     * @param int $var
+     */
+    public function __construct(int $var) {
+        $this->var = $var;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromVar(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toVar(): int {
+        if (VarClass::validateVar($this->var))  {
+            return $this->var; /*int*/
+        }
+        throw new Exception('never get to this VarClass::var');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVar(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getVar(): int {
+        if (VarClass::validateVar($this->var))  {
+            return $this->var;
+        }
+        throw new Exception('never get to getVar VarClass::var');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleVar(): int {
+        return 31; /*31:var*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return VarClass::validateVar($this->var);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'var'} = $this->toVar();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return VarClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): VarClass {
+        return new VarClass(
+         VarClass::fromVar($obj->{'var'})
+        );
+    }
+
+    /**
+     * @return VarClass
+     */
+    public static function sample(): VarClass {
+        return new VarClass(
+         VarClass::sampleVar()
+        );
+    }
+}
+
+// This is an autogenerated file:Virtual
+
+class Virtual {
+    private int $virtual; // json:virtual Required
+
+    /**
+     * @param int $virtual
+     */
+    public function __construct(int $virtual) {
+        $this->virtual = $virtual;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromVirtual(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toVirtual(): int {
+        if (Virtual::validateVirtual($this->virtual))  {
+            return $this->virtual; /*int*/
+        }
+        throw new Exception('never get to this Virtual::virtual');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVirtual(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getVirtual(): int {
+        if (Virtual::validateVirtual($this->virtual))  {
+            return $this->virtual;
+        }
+        throw new Exception('never get to getVirtual Virtual::virtual');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleVirtual(): int {
+        return 31; /*31:virtual*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Virtual::validateVirtual($this->virtual);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'virtual'} = $this->toVirtual();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Virtual
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Virtual {
+        return new Virtual(
+         Virtual::fromVirtual($obj->{'virtual'})
+        );
+    }
+
+    /**
+     * @return Virtual
+     */
+    public static function sample(): Virtual {
+        return new Virtual(
+         Virtual::sampleVirtual()
+        );
+    }
+}
+
+// This is an autogenerated file:VoidClass
+
+class VoidClass {
+    private int $void; // json:void Required
+
+    /**
+     * @param int $void
+     */
+    public function __construct(int $void) {
+        $this->void = $void;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromVoid(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toVoid(): int {
+        if (VoidClass::validateVoid($this->void))  {
+            return $this->void; /*int*/
+        }
+        throw new Exception('never get to this VoidClass::void');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVoid(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getVoid(): int {
+        if (VoidClass::validateVoid($this->void))  {
+            return $this->void;
+        }
+        throw new Exception('never get to getVoid VoidClass::void');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleVoid(): int {
+        return 31; /*31:void*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return VoidClass::validateVoid($this->void);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'void'} = $this->toVoid();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return VoidClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): VoidClass {
+        return new VoidClass(
+         VoidClass::fromVoid($obj->{'void'})
+        );
+    }
+
+    /**
+     * @return VoidClass
+     */
+    public static function sample(): VoidClass {
+        return new VoidClass(
+         VoidClass::sampleVoid()
+        );
+    }
+}
+
+// This is an autogenerated file:Volatile
+
+class Volatile {
+    private int $volatile; // json:volatile Required
+
+    /**
+     * @param int $volatile
+     */
+    public function __construct(int $volatile) {
+        $this->volatile = $volatile;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromVolatile(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toVolatile(): int {
+        if (Volatile::validateVolatile($this->volatile))  {
+            return $this->volatile; /*int*/
+        }
+        throw new Exception('never get to this Volatile::volatile');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateVolatile(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getVolatile(): int {
+        if (Volatile::validateVolatile($this->volatile))  {
+            return $this->volatile;
+        }
+        throw new Exception('never get to getVolatile Volatile::volatile');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleVolatile(): int {
+        return 31; /*31:volatile*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Volatile::validateVolatile($this->volatile);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'volatile'} = $this->toVolatile();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Volatile
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Volatile {
+        return new Volatile(
+         Volatile::fromVolatile($obj->{'volatile'})
+        );
+    }
+
+    /**
+     * @return Volatile
+     */
+    public static function sample(): Volatile {
+        return new Volatile(
+         Volatile::sampleVolatile()
+        );
+    }
+}
+
+// This is an autogenerated file:WcharT
+
+class WcharT {
+    private int $wcharT; // json:wchar_t Required
+
+    /**
+     * @param int $wcharT
+     */
+    public function __construct(int $wcharT) {
+        $this->wcharT = $wcharT;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromWcharT(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toWcharT(): int {
+        if (WcharT::validateWcharT($this->wcharT))  {
+            return $this->wcharT; /*int*/
+        }
+        throw new Exception('never get to this WcharT::wcharT');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWcharT(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getWcharT(): int {
+        if (WcharT::validateWcharT($this->wcharT))  {
+            return $this->wcharT;
+        }
+        throw new Exception('never get to getWcharT WcharT::wcharT');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleWcharT(): int {
+        return 31; /*31:wcharT*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return WcharT::validateWcharT($this->wcharT);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'wchar_t'} = $this->toWcharT();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return WcharT
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): WcharT {
+        return new WcharT(
+         WcharT::fromWcharT($obj->{'wchar_t'})
+        );
+    }
+
+    /**
+     * @return WcharT
+     */
+    public static function sample(): WcharT {
+        return new WcharT(
+         WcharT::sampleWcharT()
+        );
+    }
+}
+
+// This is an autogenerated file:Weak
+
+class Weak {
+    private int $weak; // json:weak Required
+
+    /**
+     * @param int $weak
+     */
+    public function __construct(int $weak) {
+        $this->weak = $weak;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromWeak(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toWeak(): int {
+        if (Weak::validateWeak($this->weak))  {
+            return $this->weak; /*int*/
+        }
+        throw new Exception('never get to this Weak::weak');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWeak(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getWeak(): int {
+        if (Weak::validateWeak($this->weak))  {
+            return $this->weak;
+        }
+        throw new Exception('never get to getWeak Weak::weak');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleWeak(): int {
+        return 31; /*31:weak*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Weak::validateWeak($this->weak);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'weak'} = $this->toWeak();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Weak
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Weak {
+        return new Weak(
+         Weak::fromWeak($obj->{'weak'})
+        );
+    }
+
+    /**
+     * @return Weak
+     */
+    public static function sample(): Weak {
+        return new Weak(
+         Weak::sampleWeak()
+        );
+    }
+}
+
+// This is an autogenerated file:Where
+
+class Where {
+    private int $where; // json:where Required
+
+    /**
+     * @param int $where
+     */
+    public function __construct(int $where) {
+        $this->where = $where;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromWhere(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toWhere(): int {
+        if (Where::validateWhere($this->where))  {
+            return $this->where; /*int*/
+        }
+        throw new Exception('never get to this Where::where');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWhere(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getWhere(): int {
+        if (Where::validateWhere($this->where))  {
+            return $this->where;
+        }
+        throw new Exception('never get to getWhere Where::where');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleWhere(): int {
+        return 31; /*31:where*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Where::validateWhere($this->where);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'where'} = $this->toWhere();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Where
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Where {
+        return new Where(
+         Where::fromWhere($obj->{'where'})
+        );
+    }
+
+    /**
+     * @return Where
+     */
+    public static function sample(): Where {
+        return new Where(
+         Where::sampleWhere()
+        );
+    }
+}
+
+// This is an autogenerated file:WhileClass
+
+class WhileClass {
+    private int $while; // json:while Required
+
+    /**
+     * @param int $while
+     */
+    public function __construct(int $while) {
+        $this->while = $while;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromWhile(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toWhile(): int {
+        if (WhileClass::validateWhile($this->while))  {
+            return $this->while; /*int*/
+        }
+        throw new Exception('never get to this WhileClass::while');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWhile(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getWhile(): int {
+        if (WhileClass::validateWhile($this->while))  {
+            return $this->while;
+        }
+        throw new Exception('never get to getWhile WhileClass::while');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleWhile(): int {
+        return 31; /*31:while*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return WhileClass::validateWhile($this->while);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'while'} = $this->toWhile();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return WhileClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): WhileClass {
+        return new WhileClass(
+         WhileClass::fromWhile($obj->{'while'})
+        );
+    }
+
+    /**
+     * @return WhileClass
+     */
+    public static function sample(): WhileClass {
+        return new WhileClass(
+         WhileClass::sampleWhile()
+        );
+    }
+}
+
+// This is an autogenerated file:WillSet
+
+class WillSet {
+    private int $willSet; // json:willSet Required
+
+    /**
+     * @param int $willSet
+     */
+    public function __construct(int $willSet) {
+        $this->willSet = $willSet;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromWillSet(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toWillSet(): int {
+        if (WillSet::validateWillSet($this->willSet))  {
+            return $this->willSet; /*int*/
+        }
+        throw new Exception('never get to this WillSet::willSet');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWillSet(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getWillSet(): int {
+        if (WillSet::validateWillSet($this->willSet))  {
+            return $this->willSet;
+        }
+        throw new Exception('never get to getWillSet WillSet::willSet');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleWillSet(): int {
+        return 31; /*31:willSet*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return WillSet::validateWillSet($this->willSet);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'willSet'} = $this->toWillSet();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return WillSet
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): WillSet {
+        return new WillSet(
+         WillSet::fromWillSet($obj->{'willSet'})
+        );
+    }
+
+    /**
+     * @return WillSet
+     */
+    public static function sample(): WillSet {
+        return new WillSet(
+         WillSet::sampleWillSet()
+        );
+    }
+}
+
+// This is an autogenerated file:With
+
+class With {
+    private int $with; // json:with Required
+
+    /**
+     * @param int $with
+     */
+    public function __construct(int $with) {
+        $this->with = $with;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromWith(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toWith(): int {
+        if (With::validateWith($this->with))  {
+            return $this->with; /*int*/
+        }
+        throw new Exception('never get to this With::with');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWith(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getWith(): int {
+        if (With::validateWith($this->with))  {
+            return $this->with;
+        }
+        throw new Exception('never get to getWith With::with');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleWith(): int {
+        return 31; /*31:with*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return With::validateWith($this->with);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'with'} = $this->toWith();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return With
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): With {
+        return new With(
+         With::fromWith($obj->{'with'})
+        );
+    }
+
+    /**
+     * @return With
+     */
+    public static function sample(): With {
+        return new With(
+         With::sampleWith()
+        );
+    }
+}
+
+// This is an autogenerated file:XorClass
+
+class XorClass {
+    private int $xor; // json:xor Required
+
+    /**
+     * @param int $xor
+     */
+    public function __construct(int $xor) {
+        $this->xor = $xor;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromXor(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toXor(): int {
+        if (XorClass::validateXor($this->xor))  {
+            return $this->xor; /*int*/
+        }
+        throw new Exception('never get to this XorClass::xor');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateXor(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getXor(): int {
+        if (XorClass::validateXor($this->xor))  {
+            return $this->xor;
+        }
+        throw new Exception('never get to getXor XorClass::xor');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleXor(): int {
+        return 31; /*31:xor*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return XorClass::validateXor($this->xor);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'xor'} = $this->toXor();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return XorClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): XorClass {
+        return new XorClass(
+         XorClass::fromXor($obj->{'xor'})
+        );
+    }
+
+    /**
+     * @return XorClass
+     */
+    public static function sample(): XorClass {
+        return new XorClass(
+         XorClass::sampleXor()
+        );
+    }
+}
+
+// This is an autogenerated file:XorEq
+
+class XorEq {
+    private int $xorEq; // json:xor_eq Required
+
+    /**
+     * @param int $xorEq
+     */
+    public function __construct(int $xorEq) {
+        $this->xorEq = $xorEq;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromXorEq(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toXorEq(): int {
+        if (XorEq::validateXorEq($this->xorEq))  {
+            return $this->xorEq; /*int*/
+        }
+        throw new Exception('never get to this XorEq::xorEq');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateXorEq(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getXorEq(): int {
+        if (XorEq::validateXorEq($this->xorEq))  {
+            return $this->xorEq;
+        }
+        throw new Exception('never get to getXorEq XorEq::xorEq');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleXorEq(): int {
+        return 31; /*31:xorEq*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return XorEq::validateXorEq($this->xorEq);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'xor_eq'} = $this->toXorEq();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return XorEq
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): XorEq {
+        return new XorEq(
+         XorEq::fromXorEq($obj->{'xor_eq'})
+        );
+    }
+
+    /**
+     * @return XorEq
+     */
+    public static function sample(): XorEq {
+        return new XorEq(
+         XorEq::sampleXorEq()
+        );
+    }
+}
+
+// This is an autogenerated file:Yes
+
+class Yes {
+    private int $yes; // json:YES Required
+
+    /**
+     * @param int $yes
+     */
+    public function __construct(int $yes) {
+        $this->yes = $yes;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromYes(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toYes(): int {
+        if (Yes::validateYes($this->yes))  {
+            return $this->yes; /*int*/
+        }
+        throw new Exception('never get to this Yes::yes');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateYes(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getYes(): int {
+        if (Yes::validateYes($this->yes))  {
+            return $this->yes;
+        }
+        throw new Exception('never get to getYes Yes::yes');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleYes(): int {
+        return 31; /*31:yes*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Yes::validateYes($this->yes);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'YES'} = $this->toYes();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Yes
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Yes {
+        return new Yes(
+         Yes::fromYes($obj->{'YES'})
+        );
+    }
+
+    /**
+     * @return Yes
+     */
+    public static function sample(): Yes {
+        return new Yes(
+         Yes::sampleYes()
+        );
+    }
+}
+
+// This is an autogenerated file:YieldClass
+
+class YieldClass {
+    private int $yield; // json:yield Required
+
+    /**
+     * @param int $yield
+     */
+    public function __construct(int $yield) {
+        $this->yield = $yield;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromYield(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toYield(): int {
+        if (YieldClass::validateYield($this->yield))  {
+            return $this->yield; /*int*/
+        }
+        throw new Exception('never get to this YieldClass::yield');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateYield(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getYield(): int {
+        if (YieldClass::validateYield($this->yield))  {
+            return $this->yield;
+        }
+        throw new Exception('never get to getYield YieldClass::yield');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleYield(): int {
+        return 31; /*31:yield*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return YieldClass::validateYield($this->yield);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'yield'} = $this->toYield();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return YieldClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): YieldClass {
+        return new YieldClass(
+         YieldClass::fromYield($obj->{'yield'})
+        );
+    }
+
+    /**
+     * @return YieldClass
+     */
+    public static function sample(): YieldClass {
+        return new YieldClass(
+         YieldClass::sampleYield()
+        );
+    }
+}
diff --git a/base/schema-cjson/test/inputs/schema/accessors.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/accessors.schema/default/TopLevel.c
index 7e04721..8972a8d 100644
--- a/base/schema-cjson/test/inputs/schema/accessors.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/accessors.schema/default/TopLevel.c
@@ -37,6 +37,7 @@ struct Union * cJSON_GetUnionValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.amount = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/bool-string.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/bool-string.schema/default/TopLevel.c
index 27eb14d..bf99ec6 100644
--- a/base/schema-cjson/test/inputs/schema/bool-string.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/bool-string.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct UnionWithBool * cJSON_GetUnionWithBoolValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/class-with-additional.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/class-with-additional.schema/default/TopLevel.c
index 8ecc287..e115071 100644
--- a/base/schema-cjson/test/inputs/schema/class-with-additional.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/class-with-additional.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct Map * cJSON_GetMapValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/constructor.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/constructor.schema/default/TopLevel.c
index e88ed1f..d802327 100644
--- a/base/schema-cjson/test/inputs/schema/constructor.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/constructor.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct UnionConstructor * cJSON_GetUnionConstructorValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.constructor = cJSON_GetConstructorValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c
index c060eff..97ec2c7 100644
--- a/base/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct ComplexUnionArray * cJSON_GetComplexUnionArrayValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/description.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/description.schema/default/TopLevel.c
index f9e1ef9..cd579e8 100644
--- a/base/schema-cjson/test/inputs/schema/description.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/description.schema/default/TopLevel.c
@@ -35,6 +35,7 @@ struct ObjectOrStringUnion * cJSON_GetObjectOrStringUnionValue(const cJSON * j)
             x->type = cJSON_Object;
             x->value.object_or_string_class = cJSON_GetObjectOrStringClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -76,6 +77,7 @@ struct Union * cJSON_GetUnionValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/enum.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/enum.schema/default/TopLevel.c
index 43355b3..b82838b 100644
--- a/base/schema-cjson/test/inputs/schema/enum.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/enum.schema/default/TopLevel.c
@@ -77,6 +77,7 @@ struct Arr * cJSON_GetArrValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetOtherArrValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/integer-string.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/integer-string.schema/default/TopLevel.c
index ed2eb76..d34a5b6 100644
--- a/base/schema-cjson/test/inputs/schema/integer-string.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/integer-string.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct UnionWithInt * cJSON_GetUnionWithIntValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
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 e0cb346..1449603 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
@@ -17,6 +17,7 @@ struct UnionAbstract * cJSON_GetUnionAbstractValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.abstract = cJSON_GetAbstractValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -57,6 +58,7 @@ struct UnionAny * cJSON_GetUnionAnyValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.any = cJSON_GetAnyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -97,6 +99,7 @@ struct UnionArray * cJSON_GetUnionArrayValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.array_class = cJSON_GetArrayClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -137,6 +140,7 @@ struct UnionAs * cJSON_GetUnionAsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.as = cJSON_GetAsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -177,6 +181,7 @@ struct UnionAssert * cJSON_GetUnionAssertValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.assert = cJSON_GetAssertValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -217,6 +222,7 @@ struct UnionAssociatedtype * cJSON_GetUnionAssociatedtypeValue(const cJSON * j)
             x->type = cJSON_Object;
             x->value.associatedtype = cJSON_GetAssociatedtypeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -257,6 +263,7 @@ struct UnionAssociativity * cJSON_GetUnionAssociativityValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.associativity = cJSON_GetAssociativityValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -297,6 +304,7 @@ struct UnionAsync * cJSON_GetUnionAsyncValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.async = cJSON_GetAsyncValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -337,6 +345,7 @@ struct UnionAtomic * cJSON_GetUnionAtomicValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.atomic = cJSON_GetAtomicValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -377,6 +386,7 @@ struct UnionAwait * cJSON_GetUnionAwaitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.await = cJSON_GetAwaitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -417,6 +427,7 @@ struct UnionBase * cJSON_GetUnionBaseValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.base = cJSON_GetBaseValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -457,6 +468,7 @@ struct UnionBoolean * cJSON_GetUnionBooleanValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.boolean = cJSON_GetBooleanValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -497,6 +509,7 @@ struct UnionBycopy * cJSON_GetUnionBycopyValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.bycopy = cJSON_GetBycopyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -537,6 +550,7 @@ struct UnionByref * cJSON_GetUnionByrefValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.byref = cJSON_GetByrefValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -577,6 +591,7 @@ struct UnionByte * cJSON_GetUnionByteValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.byte = cJSON_GetByteValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -617,6 +632,7 @@ struct UnionChan * cJSON_GetUnionChanValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.chan = cJSON_GetChanValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -657,6 +673,7 @@ struct UnionChecked * cJSON_GetUnionCheckedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.checked = cJSON_GetCheckedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -697,6 +714,7 @@ struct UnionComplex * cJSON_GetUnionComplexValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.complex = cJSON_GetComplexValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -737,6 +755,7 @@ struct UnionConsole * cJSON_GetUnionConsoleValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.console = cJSON_GetConsoleValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -777,6 +796,7 @@ struct UnionConstructor * cJSON_GetUnionConstructorValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.constructor = cJSON_GetConstructorValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -817,6 +837,7 @@ struct UnionConvenience * cJSON_GetUnionConvenienceValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.convenience = cJSON_GetConvenienceValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -857,6 +878,7 @@ struct UnionConvert * cJSON_GetUnionConvertValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.convert = cJSON_GetConvertValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -897,6 +919,7 @@ struct UnionConverter * cJSON_GetUnionConverterValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.converter = cJSON_GetConverterValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -937,6 +960,7 @@ struct UnionDate * cJSON_GetUnionDateValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.date = cJSON_GetDateValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -977,6 +1001,7 @@ struct UnionDateParseHandling * cJSON_GetUnionDateParseHandlingValue(const cJSON
             x->type = cJSON_Object;
             x->value.date_parse_handling = cJSON_GetDateParseHandlingValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1017,6 +1042,7 @@ struct UnionDebugger * cJSON_GetUnionDebuggerValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.debugger = cJSON_GetDebuggerValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1057,6 +1083,7 @@ struct UnionDecimal * cJSON_GetUnionDecimalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.decimal = cJSON_GetDecimalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1097,6 +1124,7 @@ struct UnionDeclare * cJSON_GetUnionDeclareValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.declare = cJSON_GetDeclareValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1137,6 +1165,7 @@ struct UnionDecodeString * cJSON_GetUnionDecodeStringValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.decode_string = cJSON_GetDecodeStringValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1177,6 +1206,7 @@ struct UnionDef * cJSON_GetUnionDefValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.def = cJSON_GetDefValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1217,6 +1247,7 @@ struct UnionDefer * cJSON_GetUnionDeferValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.defer = cJSON_GetDeferValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1257,6 +1288,7 @@ struct UnionDeinit * cJSON_GetUnionDeinitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.deinit = cJSON_GetDeinitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1297,6 +1329,7 @@ struct UnionDel * cJSON_GetUnionDelValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.del = cJSON_GetDelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1337,6 +1370,7 @@ struct UnionDelegate * cJSON_GetUnionDelegateValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.delegate = cJSON_GetDelegateValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1377,6 +1411,7 @@ struct UnionDict * cJSON_GetUnionDictValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.dict = cJSON_GetDictValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1417,6 +1452,7 @@ struct UnionDictionary * cJSON_GetUnionDictionaryValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.dictionary = cJSON_GetDictionaryValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1457,6 +1493,7 @@ struct UnionDidSet * cJSON_GetUnionDidSetValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.did_set = cJSON_GetDidSetValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1497,6 +1534,7 @@ struct UnionDynamic * cJSON_GetUnionDynamicValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.dynamic = cJSON_GetDynamicValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1537,6 +1575,7 @@ struct UnionElif * cJSON_GetUnionElifValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.elif = cJSON_GetElifValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1577,6 +1616,7 @@ struct UnionUnion * cJSON_GetUnionUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.empty = cJSON_GetEmptyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1617,6 +1657,7 @@ struct UnionEncodeQuickType * cJSON_GetUnionEncodeQuickTypeValue(const cJSON * j
             x->type = cJSON_Object;
             x->value.encode_quick_type = cJSON_GetEncodeQuickTypeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1657,6 +1698,7 @@ struct UnionEvent * cJSON_GetUnionEventValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.event = cJSON_GetEventValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1697,6 +1739,7 @@ struct UnionExcept * cJSON_GetUnionExceptValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.except = cJSON_GetExceptValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1737,6 +1780,7 @@ struct UnionException * cJSON_GetUnionExceptionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.exception = cJSON_GetExceptionValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1777,6 +1821,7 @@ struct UnionExposing * cJSON_GetUnionExposingValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.exposing = cJSON_GetExposingValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1817,6 +1862,7 @@ struct UnionExtends * cJSON_GetUnionExtendsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.extends = cJSON_GetExtendsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1857,6 +1903,7 @@ struct UnionExtension * cJSON_GetUnionExtensionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.extension = cJSON_GetExtensionValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1897,6 +1944,7 @@ struct UnionFallthrough * cJSON_GetUnionFallthroughValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fallthrough = cJSON_GetFallthroughValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1937,6 +1985,7 @@ struct UnionFileprivate * cJSON_GetUnionFileprivateValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fileprivate = cJSON_GetFileprivateValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1977,6 +2026,7 @@ struct UnionFinally * cJSON_GetUnionFinallyValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.finally = cJSON_GetFinallyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2017,6 +2067,7 @@ struct UnionFixed * cJSON_GetUnionFixedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.fixed = cJSON_GetFixedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2057,6 +2108,7 @@ struct TopLevelUnionBool * cJSON_GetTopLevelUnionBoolValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.union_bool_bool_class = cJSON_GetUnionBoolBoolClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2097,6 +2149,7 @@ struct UnionForeach * cJSON_GetUnionForeachValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.foreach = cJSON_GetForeachValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2137,6 +2190,7 @@ struct UnionFrom * cJSON_GetUnionFromValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.from = cJSON_GetFromValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2177,6 +2231,7 @@ struct UnionFromJson * cJSON_GetUnionFromJsonValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.from_json = cJSON_GetFromJsonValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2217,6 +2272,7 @@ struct UnionFunc * cJSON_GetUnionFuncValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.func = cJSON_GetFuncValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2257,6 +2313,7 @@ struct UnionFunction * cJSON_GetUnionFunctionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.function = cJSON_GetFunctionValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2297,6 +2354,7 @@ struct UnionGet * cJSON_GetUnionGetValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.get = cJSON_GetGetValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2337,6 +2395,7 @@ struct UnionGlobal * cJSON_GetUnionGlobalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.global = cJSON_GetGlobalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2377,6 +2436,7 @@ struct UnionGo * cJSON_GetUnionGoValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.go = cJSON_GetGoValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2417,6 +2477,7 @@ struct UnionGuard * cJSON_GetUnionGuardValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.guard = cJSON_GetGuardValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2457,6 +2518,7 @@ struct UnionHasOwnProperty * cJSON_GetUnionHasOwnPropertyValue(const cJSON * j)
             x->type = cJSON_Object;
             x->value.has_own_property = cJSON_GetHasOwnPropertyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2497,6 +2559,7 @@ struct UnionId * cJSON_GetUnionIdValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.id = cJSON_GetIdValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2537,6 +2600,7 @@ struct UnionImaginery * cJSON_GetUnionImagineryValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.imaginery = cJSON_GetImagineryValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2577,6 +2641,7 @@ struct UnionImp * cJSON_GetUnionImpValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.imp = cJSON_GetImpValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2617,6 +2682,7 @@ struct UnionImplements * cJSON_GetUnionImplementsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.implements = cJSON_GetImplementsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2657,6 +2723,7 @@ struct UnionImplicit * cJSON_GetUnionImplicitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.implicit = cJSON_GetImplicitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2697,6 +2764,7 @@ struct UnionIn * cJSON_GetUnionInValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.in = cJSON_GetInValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2737,6 +2805,7 @@ struct UnionIndirect * cJSON_GetUnionIndirectValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.indirect = cJSON_GetIndirectValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2777,6 +2846,7 @@ struct UnionInfix * cJSON_GetUnionInfixValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.infix = cJSON_GetInfixValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2817,6 +2887,7 @@ struct UnionInit * cJSON_GetUnionInitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.init = cJSON_GetInitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2857,6 +2928,7 @@ struct UnionInout * cJSON_GetUnionInoutValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.inout = cJSON_GetInoutValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2897,6 +2969,7 @@ struct UnionInstanceof * cJSON_GetUnionInstanceofValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.instanceof = cJSON_GetInstanceofValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2937,6 +3010,7 @@ struct UnionInterface * cJSON_GetUnionInterfaceValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.interface = cJSON_GetInterfaceValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2977,6 +3051,7 @@ struct UnionInternal * cJSON_GetUnionInternalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.internal = cJSON_GetInternalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3017,6 +3092,7 @@ struct UnionIs * cJSON_GetUnionIsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.is = cJSON_GetIsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3057,6 +3133,7 @@ struct UnionIterable * cJSON_GetUnionIterableValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.iterable = cJSON_GetIterableValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3097,6 +3174,7 @@ struct UnionJdec * cJSON_GetUnionJdecValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.jdec = cJSON_GetJdecValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3137,6 +3215,7 @@ struct UnionJenc * cJSON_GetUnionJencValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.jenc = cJSON_GetJencValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3177,6 +3256,7 @@ struct UnionJpipe * cJSON_GetUnionJpipeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.jpipe = cJSON_GetJpipeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3217,6 +3297,7 @@ struct UnionJson * cJSON_GetUnionJsonValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.json = cJSON_GetJsonValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3257,6 +3338,7 @@ struct UnionJsonConverter * cJSON_GetUnionJsonConverterValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.json_converter = cJSON_GetJsonConverterValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3297,6 +3379,7 @@ struct UnionJsonSerializer * cJSON_GetUnionJsonSerializerValue(const cJSON * j)
             x->type = cJSON_Object;
             x->value.json_serializer = cJSON_GetJsonSerializerValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3337,6 +3420,7 @@ struct UnionJsonToken * cJSON_GetUnionJsonTokenValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.json_token = cJSON_GetJsonTokenValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3377,6 +3461,7 @@ struct UnionJsonWriter * cJSON_GetUnionJsonWriterValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.json_writer = cJSON_GetJsonWriterValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3417,6 +3502,7 @@ struct UnionLambda * cJSON_GetUnionLambdaValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.lambda = cJSON_GetLambdaValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3457,6 +3543,7 @@ struct UnionLazy * cJSON_GetUnionLazyValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.lazy = cJSON_GetLazyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3497,6 +3584,7 @@ struct UnionLeft * cJSON_GetUnionLeftValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.left = cJSON_GetLeftValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3537,6 +3625,7 @@ struct UnionLet * cJSON_GetUnionLetValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.let = cJSON_GetLetValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3577,6 +3666,7 @@ struct UnionList * cJSON_GetUnionListValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.list = cJSON_GetListValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3617,6 +3707,7 @@ struct UnionLock * cJSON_GetUnionLockValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.lock = cJSON_GetLockValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3657,6 +3748,7 @@ struct UnionMap * cJSON_GetUnionMapValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.map = cJSON_GetMapValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3697,6 +3789,7 @@ struct UnionMetadataPropertyHandling * cJSON_GetUnionMetadataPropertyHandlingVal
             x->type = cJSON_Object;
             x->value.metadata_property_handling = cJSON_GetMetadataPropertyHandlingValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3737,6 +3830,7 @@ struct UnionMutating * cJSON_GetUnionMutatingValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.mutating = cJSON_GetMutatingValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3777,6 +3871,7 @@ struct UnionNative * cJSON_GetUnionNativeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.native = cJSON_GetNativeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3817,6 +3912,7 @@ struct UnionNewtonsoft * cJSON_GetUnionNewtonsoftValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.newtonsoft = cJSON_GetNewtonsoftValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3857,6 +3953,7 @@ struct UnionNil * cJSON_GetUnionNilValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.nil = cJSON_GetNilValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3897,6 +3994,7 @@ struct UnionNo * cJSON_GetUnionNoValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.no = cJSON_GetNoValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3937,6 +4035,7 @@ struct UnionNonatomic * cJSON_GetUnionNonatomicValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.nonatomic = cJSON_GetNonatomicValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -3977,6 +4076,7 @@ struct UnionNone * cJSON_GetUnionNoneValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.none = cJSON_GetNoneValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4017,6 +4117,7 @@ struct UnionNonlocal * cJSON_GetUnionNonlocalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.nonlocal = cJSON_GetNonlocalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4057,6 +4158,7 @@ struct UnionNonmutating * cJSON_GetUnionNonmutatingValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.nonmutating = cJSON_GetNonmutatingValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4097,6 +4199,7 @@ struct UnionNsString * cJSON_GetUnionNsStringValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.ns_string = cJSON_GetNsStringValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4137,6 +4240,7 @@ struct UnionNull * cJSON_GetUnionNullValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.null_class = cJSON_GetNullClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4177,6 +4281,7 @@ struct UnionNumber * cJSON_GetUnionNumberValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.number_class = cJSON_GetNumberClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4217,6 +4322,7 @@ struct UnionObject * cJSON_GetUnionObjectValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.object_class = cJSON_GetObjectClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4257,6 +4363,7 @@ struct UnionOf * cJSON_GetUnionOfValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.of = cJSON_GetOfValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4297,6 +4404,7 @@ struct UnionOneway * cJSON_GetUnionOnewayValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.oneway = cJSON_GetOnewayValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4337,6 +4445,7 @@ struct UnionOpen * cJSON_GetUnionOpenValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.open = cJSON_GetOpenValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4377,6 +4486,7 @@ struct UnionOptional * cJSON_GetUnionOptionalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.optional = cJSON_GetOptionalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4417,6 +4527,7 @@ struct UnionOut * cJSON_GetUnionOutValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.out = cJSON_GetOutValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4457,6 +4568,7 @@ struct UnionPackage * cJSON_GetUnionPackageValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.package = cJSON_GetPackageValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4497,6 +4609,7 @@ struct UnionParams * cJSON_GetUnionParamsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.params = cJSON_GetParamsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4537,6 +4650,7 @@ struct UnionPass * cJSON_GetUnionPassValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.pass = cJSON_GetPassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4577,6 +4691,7 @@ struct UnionPort * cJSON_GetUnionPortValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.port = cJSON_GetPortValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4617,6 +4732,7 @@ struct UnionPostfix * cJSON_GetUnionPostfixValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.postfix = cJSON_GetPostfixValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4657,6 +4773,7 @@ struct UnionPrecedence * cJSON_GetUnionPrecedenceValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.precedence = cJSON_GetPrecedenceValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4697,6 +4814,7 @@ struct UnionPrefix * cJSON_GetUnionPrefixValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.prefix = cJSON_GetPrefixValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4737,6 +4855,7 @@ struct UnionPrint * cJSON_GetUnionPrintValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.print = cJSON_GetPrintValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4777,6 +4896,7 @@ struct UnionPrintf * cJSON_GetUnionPrintfValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.printf = cJSON_GetPrintfValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4817,6 +4937,7 @@ struct UnionProtocol * cJSON_GetUnionProtocolValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.protocol = cJSON_GetProtocolValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4857,6 +4978,7 @@ struct UnionBoolUnion * cJSON_GetUnionBoolUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.union_bool_bool = cJSON_GetUnionBoolBoolValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4897,6 +5019,7 @@ struct UnionClassUnion * cJSON_GetUnionClassUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.class_class = cJSON_GetClassClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4937,6 +5060,7 @@ struct UnionFalseUnion * cJSON_GetUnionFalseUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.union_false_false = cJSON_GetUnionFalseFalseValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -4977,6 +5101,7 @@ struct UnionTrueUnion * cJSON_GetUnionTrueUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.union_true_true = cJSON_GetUnionTrueTrueValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5017,6 +5142,7 @@ struct UnionQuicktype * cJSON_GetUnionQuicktypeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.quicktype = cJSON_GetQuicktypeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5057,6 +5183,7 @@ struct UnionRaise * cJSON_GetUnionRaiseValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.raise = cJSON_GetRaiseValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5097,6 +5224,7 @@ struct UnionRange * cJSON_GetUnionRangeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.range = cJSON_GetRangeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5137,6 +5265,7 @@ struct UnionReadonly * cJSON_GetUnionReadonlyValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.readonly = cJSON_GetReadonlyValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5177,6 +5306,7 @@ struct UnionRef * cJSON_GetUnionRefValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.ref = cJSON_GetRefValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5217,6 +5347,7 @@ struct UnionRepeat * cJSON_GetUnionRepeatValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.repeat = cJSON_GetRepeatValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5257,6 +5388,7 @@ struct UnionRequire * cJSON_GetUnionRequireValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.require = cJSON_GetRequireValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5297,6 +5429,7 @@ struct UnionRequired * cJSON_GetUnionRequiredValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.required = cJSON_GetRequiredValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5337,6 +5470,7 @@ struct UnionRetain * cJSON_GetUnionRetainValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.retain = cJSON_GetRetainValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5377,6 +5511,7 @@ struct UnionRethrows * cJSON_GetUnionRethrowsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.rethrows = cJSON_GetRethrowsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5417,6 +5552,7 @@ struct UnionRight * cJSON_GetUnionRightValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.right = cJSON_GetRightValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5457,6 +5593,7 @@ struct UnionSbyte * cJSON_GetUnionSbyteValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.sbyte = cJSON_GetSbyteValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5497,6 +5634,7 @@ struct UnionSealed * cJSON_GetUnionSealedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.sealed = cJSON_GetSealedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5537,6 +5675,7 @@ struct UnionSel * cJSON_GetUnionSelValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.sel = cJSON_GetSelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5577,6 +5716,7 @@ struct UnionSelect * cJSON_GetUnionSelectValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.select = cJSON_GetSelectValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5617,6 +5757,7 @@ struct UnionSelf * cJSON_GetUnionSelfValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.self = cJSON_GetSelfValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5657,6 +5798,7 @@ struct UnionSerialize * cJSON_GetUnionSerializeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.serialize = cJSON_GetSerializeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5697,6 +5839,7 @@ struct UnionSet * cJSON_GetUnionSetValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.set = cJSON_GetSetValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5737,6 +5880,7 @@ struct UnionStackalloc * cJSON_GetUnionStackallocValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.stackalloc = cJSON_GetStackallocValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5777,6 +5921,7 @@ struct UnionStrictfp * cJSON_GetUnionStrictfpValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.strictfp = cJSON_GetStrictfpValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5817,6 +5962,7 @@ struct UnionString * cJSON_GetUnionStringValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.string_class = cJSON_GetStringClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5857,6 +6003,7 @@ struct UnionSubscript * cJSON_GetUnionSubscriptValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.subscript = cJSON_GetSubscriptValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5897,6 +6044,7 @@ struct UnionSuper * cJSON_GetUnionSuperValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.super = cJSON_GetSuperValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5937,6 +6085,7 @@ struct UnionSymbol * cJSON_GetUnionSymbolValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.symbol = cJSON_GetSymbolValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -5977,6 +6126,7 @@ struct UnionSystem * cJSON_GetUnionSystemValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.system = cJSON_GetSystemValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6017,6 +6167,7 @@ struct UnionThen * cJSON_GetUnionThenValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.then = cJSON_GetThenValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6057,6 +6208,7 @@ struct UnionThrows * cJSON_GetUnionThrowsValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.throws = cJSON_GetThrowsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6097,6 +6249,7 @@ struct UnionToJson * cJSON_GetUnionToJsonValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.to_json = cJSON_GetToJsonValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6137,6 +6290,7 @@ struct UnionTopLevel * cJSON_GetUnionTopLevelValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.top_level_class = cJSON_GetTopLevelClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6177,6 +6331,7 @@ struct UnionAlignas * cJSON_GetUnionAlignasValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_alignas = cJSON_GetAlignasValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6217,6 +6372,7 @@ struct UnionAlignof * cJSON_GetUnionAlignofValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_alignof = cJSON_GetAlignofValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6257,6 +6413,7 @@ struct UnionAnd * cJSON_GetUnionAndValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_and = cJSON_GetAndValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6297,6 +6454,7 @@ struct UnionAndEq * cJSON_GetUnionAndEqValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_and_eq = cJSON_GetAndEqValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6337,6 +6495,7 @@ struct UnionAnyUnion * cJSON_GetUnionAnyUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.any_class = cJSON_GetAnyClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6377,6 +6536,7 @@ struct UnionAsm * cJSON_GetUnionAsmValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_asm = cJSON_GetAsmValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6417,6 +6577,7 @@ struct UnionAtomicCancel * cJSON_GetUnionAtomicCancelValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_atomic_cancel = cJSON_GetAtomicCancelValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6457,6 +6618,7 @@ struct UnionAtomicCommit * cJSON_GetUnionAtomicCommitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_atomic_commit = cJSON_GetAtomicCommitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6497,6 +6659,7 @@ struct UnionAtomicNoexcept * cJSON_GetUnionAtomicNoexceptValue(const cJSON * j)
             x->type = cJSON_Object;
             x->value.purple_atomic_noexcept = cJSON_GetAtomicNoexceptValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6537,6 +6700,7 @@ struct UnionAuto * cJSON_GetUnionAutoValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_auto = cJSON_GetAutoValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6577,6 +6741,7 @@ struct UnionBitand * cJSON_GetUnionBitandValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_bitand = cJSON_GetBitandValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6617,6 +6782,7 @@ struct UnionBitor * cJSON_GetUnionBitorValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_bitor = cJSON_GetBitorValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6657,6 +6823,7 @@ struct UnionBool * cJSON_GetUnionBoolValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.bool_class = cJSON_GetBoolClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6697,6 +6864,7 @@ struct UnionBreak * cJSON_GetUnionBreakValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_break = cJSON_GetBreakValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6737,6 +6905,7 @@ struct UnionCase * cJSON_GetUnionCaseValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_case = cJSON_GetCaseValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6777,6 +6946,7 @@ struct UnionCatch * cJSON_GetUnionCatchValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_catch = cJSON_GetCatchValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6817,6 +6987,7 @@ struct UnionChar * cJSON_GetUnionCharValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_char = cJSON_GetCharValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6857,6 +7028,7 @@ struct UnionChar16T * cJSON_GetUnionChar16TValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_char16_t = cJSON_GetChar16TValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6897,6 +7069,7 @@ struct UnionChar32T * cJSON_GetUnionChar32TValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_char32_t = cJSON_GetChar32TValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6937,6 +7110,7 @@ struct UnionClass * cJSON_GetUnionClassValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_class = cJSON_GetClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -6977,6 +7151,7 @@ struct UnionCoAwait * cJSON_GetUnionCoAwaitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_co_await = cJSON_GetCoAwaitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7017,6 +7192,7 @@ struct UnionCoReturn * cJSON_GetUnionCoReturnValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_co_return = cJSON_GetCoReturnValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7057,6 +7233,7 @@ struct UnionCoYield * cJSON_GetUnionCoYieldValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_co_yield = cJSON_GetCoYieldValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7097,6 +7274,7 @@ struct UnionCompl * cJSON_GetUnionComplValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_compl = cJSON_GetComplValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7137,6 +7315,7 @@ struct UnionConcept * cJSON_GetUnionConceptValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_concept = cJSON_GetConceptValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7177,6 +7356,7 @@ struct UnionConst * cJSON_GetUnionConstValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_const = cJSON_GetConstValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7217,6 +7397,7 @@ struct UnionConstCast * cJSON_GetUnionConstCastValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_const_cast = cJSON_GetConstCastValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7257,6 +7438,7 @@ struct UnionConstexpr * cJSON_GetUnionConstexprValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_constexpr = cJSON_GetConstexprValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7297,6 +7479,7 @@ struct UnionContinue * cJSON_GetUnionContinueValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_continue = cJSON_GetContinueValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7337,6 +7520,7 @@ struct UnionDecltype * cJSON_GetUnionDecltypeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_decltype = cJSON_GetDecltypeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7377,6 +7561,7 @@ struct UnionDefault * cJSON_GetUnionDefaultValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_default = cJSON_GetDefaultValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7417,6 +7602,7 @@ struct UnionDelete * cJSON_GetUnionDeleteValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_delete = cJSON_GetDeleteValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7457,6 +7643,7 @@ struct UnionDo * cJSON_GetUnionDoValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_do = cJSON_GetDoValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7497,6 +7684,7 @@ struct UnionDouble * cJSON_GetUnionDoubleValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_double = cJSON_GetDoubleValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7537,6 +7725,7 @@ struct UnionDynamicCast * cJSON_GetUnionDynamicCastValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_dynamic_cast = cJSON_GetDynamicCastValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7577,6 +7766,7 @@ struct UnionElse * cJSON_GetUnionElseValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_else = cJSON_GetElseValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7617,6 +7807,7 @@ struct UnionEnum * cJSON_GetUnionEnumValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_enum = cJSON_GetEnumValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7657,6 +7848,7 @@ struct UnionExplicit * cJSON_GetUnionExplicitValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_explicit = cJSON_GetExplicitValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7697,6 +7889,7 @@ struct UnionExport * cJSON_GetUnionExportValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_export = cJSON_GetExportValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7737,6 +7930,7 @@ struct UnionExtern * cJSON_GetUnionExternValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_extern = cJSON_GetExternValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7777,6 +7971,7 @@ struct UnionFalse * cJSON_GetUnionFalseValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.false_class = cJSON_GetFalseClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7817,6 +8012,7 @@ struct UnionFinal * cJSON_GetUnionFinalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_final = cJSON_GetFinalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7857,6 +8053,7 @@ struct UnionFloat * cJSON_GetUnionFloatValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_float = cJSON_GetFloatValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7897,6 +8094,7 @@ struct UnionFor * cJSON_GetUnionForValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_for = cJSON_GetForValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7937,6 +8135,7 @@ struct UnionFriend * cJSON_GetUnionFriendValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_friend = cJSON_GetFriendValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -7977,6 +8176,7 @@ struct UnionGoto * cJSON_GetUnionGotoValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_goto = cJSON_GetGotoValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8017,6 +8217,7 @@ struct UnionIf * cJSON_GetUnionIfValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_if = cJSON_GetIfValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8057,6 +8258,7 @@ struct UnionImport * cJSON_GetUnionImportValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_import = cJSON_GetImportValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8097,6 +8299,7 @@ struct UnionInline * cJSON_GetUnionInlineValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_inline = cJSON_GetInlineValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8137,6 +8340,7 @@ struct UnionInt * cJSON_GetUnionIntValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_int = cJSON_GetIntValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8177,6 +8381,7 @@ struct UnionLong * cJSON_GetUnionLongValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_long = cJSON_GetLongValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8217,6 +8422,7 @@ struct UnionModule * cJSON_GetUnionModuleValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_module = cJSON_GetModuleValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8257,6 +8463,7 @@ struct UnionMutable * cJSON_GetUnionMutableValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_mutable = cJSON_GetMutableValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8297,6 +8504,7 @@ struct UnionNamespace * cJSON_GetUnionNamespaceValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_namespace = cJSON_GetNamespaceValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8337,6 +8545,7 @@ struct UnionNew * cJSON_GetUnionNewValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_new = cJSON_GetNewValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8377,6 +8586,7 @@ struct UnionNoexcept * cJSON_GetUnionNoexceptValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_noexcept = cJSON_GetNoexceptValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8417,6 +8627,7 @@ struct UnionNoneUnion * cJSON_GetUnionNoneUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.none_class = cJSON_GetNoneClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8457,6 +8668,7 @@ struct UnionNot * cJSON_GetUnionNotValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_not = cJSON_GetNotValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8497,6 +8709,7 @@ struct UnionNotEq * cJSON_GetUnionNotEqValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_not_eq = cJSON_GetNotEqValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8537,6 +8750,7 @@ struct UnionNullUnion * cJSON_GetUnionNullUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.union_null_null = cJSON_GetUnionNullNullValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8577,6 +8791,7 @@ struct UnionNullptr * cJSON_GetUnionNullptrValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_nullptr = cJSON_GetNullptrValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8617,6 +8832,7 @@ struct UnionOperator * cJSON_GetUnionOperatorValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_operator = cJSON_GetOperatorValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8657,6 +8873,7 @@ struct UnionOr * cJSON_GetUnionOrValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_or = cJSON_GetOrValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8697,6 +8914,7 @@ struct UnionOrEq * cJSON_GetUnionOrEqValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_or_eq = cJSON_GetOrEqValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8737,6 +8955,7 @@ struct UnionOverride * cJSON_GetUnionOverrideValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_override = cJSON_GetOverrideValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8777,6 +8996,7 @@ struct UnionPrivate * cJSON_GetUnionPrivateValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_private = cJSON_GetPrivateValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8817,6 +9037,7 @@ struct UnionProtected * cJSON_GetUnionProtectedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_protected = cJSON_GetProtectedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8857,6 +9078,7 @@ struct UnionProtocolUnion * cJSON_GetUnionProtocolUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.protocol_class = cJSON_GetProtocolClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8897,6 +9119,7 @@ struct UnionPublic * cJSON_GetUnionPublicValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_public = cJSON_GetPublicValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8937,6 +9160,7 @@ struct UnionRegister * cJSON_GetUnionRegisterValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_register = cJSON_GetRegisterValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -8977,6 +9201,7 @@ struct UnionReinterpretCast * cJSON_GetUnionReinterpretCastValue(const cJSON * j
             x->type = cJSON_Object;
             x->value.purple_reinterpret_cast = cJSON_GetReinterpretCastValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9017,6 +9242,7 @@ struct UnionRequires * cJSON_GetUnionRequiresValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_requires = cJSON_GetRequiresValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9057,6 +9283,7 @@ struct UnionRestrict * cJSON_GetUnionRestrictValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_restrict = cJSON_GetRestrictValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9097,6 +9324,7 @@ struct UnionReturn * cJSON_GetUnionReturnValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_return = cJSON_GetReturnValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9137,6 +9365,7 @@ struct UnionSelfUnion * cJSON_GetUnionSelfUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.self_class = cJSON_GetSelfClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9177,6 +9406,7 @@ struct UnionShort * cJSON_GetUnionShortValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_short = cJSON_GetShortValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9217,6 +9447,7 @@ struct UnionSigned * cJSON_GetUnionSignedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_signed = cJSON_GetSignedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9257,6 +9488,7 @@ struct UnionSizeof * cJSON_GetUnionSizeofValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_sizeof = cJSON_GetSizeofValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9297,6 +9529,7 @@ struct UnionStatic * cJSON_GetUnionStaticValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_static = cJSON_GetStaticValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9337,6 +9570,7 @@ struct UnionStaticAssert * cJSON_GetUnionStaticAssertValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_static_assert = cJSON_GetStaticAssertValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9377,6 +9611,7 @@ struct UnionStaticCast * cJSON_GetUnionStaticCastValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_static_cast = cJSON_GetStaticCastValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9417,6 +9652,7 @@ struct UnionStruct * cJSON_GetUnionStructValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_struct = cJSON_GetStructValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9457,6 +9693,7 @@ struct UnionSwitch * cJSON_GetUnionSwitchValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_switch = cJSON_GetSwitchValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9497,6 +9734,7 @@ struct UnionSynchronized * cJSON_GetUnionSynchronizedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_synchronized = cJSON_GetSynchronizedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9537,6 +9775,7 @@ struct UnionTemplate * cJSON_GetUnionTemplateValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_template = cJSON_GetTemplateValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9577,6 +9816,7 @@ struct UnionThis * cJSON_GetUnionThisValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_this = cJSON_GetThisValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9617,6 +9857,7 @@ struct UnionThreadLocal * cJSON_GetUnionThreadLocalValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_thread_local = cJSON_GetThreadLocalValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9657,6 +9898,7 @@ struct UnionThrow * cJSON_GetUnionThrowValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_throw = cJSON_GetThrowValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9697,6 +9939,7 @@ struct UnionTrue * cJSON_GetUnionTrueValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.true_class = cJSON_GetTrueClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9737,6 +9980,7 @@ struct UnionTry * cJSON_GetUnionTryValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_try = cJSON_GetTryValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9777,6 +10021,7 @@ struct UnionTypeUnion * cJSON_GetUnionTypeUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.type_class = cJSON_GetTypeClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9817,6 +10062,7 @@ struct UnionTypedef * cJSON_GetUnionTypedefValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_typedef = cJSON_GetTypedefValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9857,6 +10103,7 @@ struct UnionTypeid * cJSON_GetUnionTypeidValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_typeid = cJSON_GetTypeidValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9897,6 +10144,7 @@ struct UnionTypename * cJSON_GetUnionTypenameValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_typename = cJSON_GetTypenameValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9937,6 +10185,7 @@ struct UnionTypeof * cJSON_GetUnionTypeofValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_typeof = cJSON_GetTypeofValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -9977,6 +10226,7 @@ struct UnionUnionUnion * cJSON_GetUnionUnionUnionValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_union = cJSON_GetUnionValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10017,6 +10267,7 @@ struct UnionUnsigned * cJSON_GetUnionUnsignedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_unsigned = cJSON_GetUnsignedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10057,6 +10308,7 @@ struct UnionUsing * cJSON_GetUnionUsingValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_using = cJSON_GetUsingValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10097,6 +10349,7 @@ struct UnionVirtual * cJSON_GetUnionVirtualValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_virtual = cJSON_GetVirtualValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10137,6 +10390,7 @@ struct UnionVoid * cJSON_GetUnionVoidValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_void = cJSON_GetVoidValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10177,6 +10431,7 @@ struct UnionVolatile * cJSON_GetUnionVolatileValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_volatile = cJSON_GetVolatileValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10217,6 +10472,7 @@ struct UnionWcharT * cJSON_GetUnionWcharTValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_wchar_t = cJSON_GetWcharTValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10257,6 +10513,7 @@ struct UnionWhile * cJSON_GetUnionWhileValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_while = cJSON_GetWhileValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10297,6 +10554,7 @@ struct UnionXor * cJSON_GetUnionXorValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_xor = cJSON_GetXorValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10337,6 +10595,7 @@ struct UnionXorEq * cJSON_GetUnionXorEqValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.purple_xor_eq = cJSON_GetXorEqValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10377,6 +10636,7 @@ struct UnionTransient * cJSON_GetUnionTransientValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.transient = cJSON_GetTransientValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10417,6 +10677,7 @@ struct UnionType * cJSON_GetUnionTypeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.type = cJSON_GetTypeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10457,6 +10718,7 @@ struct UnionTypealias * cJSON_GetUnionTypealiasValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.typealias = cJSON_GetTypealiasValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10497,6 +10759,7 @@ struct UnionUint * cJSON_GetUnionUintValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.uint = cJSON_GetUintValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10537,6 +10800,7 @@ struct UnionUlong * cJSON_GetUnionUlongValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.ulong = cJSON_GetUlongValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10577,6 +10841,7 @@ struct UnionUnchecked * cJSON_GetUnionUncheckedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.unchecked = cJSON_GetUncheckedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10617,6 +10882,7 @@ struct UnionUndefined * cJSON_GetUnionUndefinedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.undefined = cJSON_GetUndefinedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10657,6 +10923,7 @@ struct UnionUnowned * cJSON_GetUnionUnownedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.unowned = cJSON_GetUnownedValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10697,6 +10964,7 @@ struct UnionUnsafe * cJSON_GetUnionUnsafeValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.unsafe = cJSON_GetUnsafeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10737,6 +11005,7 @@ struct UnionUshort * cJSON_GetUnionUshortValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.ushort = cJSON_GetUshortValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10777,6 +11046,7 @@ struct UnionVar * cJSON_GetUnionVarValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.var = cJSON_GetVarValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10817,6 +11087,7 @@ struct UnionWeak * cJSON_GetUnionWeakValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.weak = cJSON_GetWeakValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10857,6 +11128,7 @@ struct UnionWhere * cJSON_GetUnionWhereValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.where = cJSON_GetWhereValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10897,6 +11169,7 @@ struct UnionWillSet * cJSON_GetUnionWillSetValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.will_set = cJSON_GetWillSetValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10937,6 +11210,7 @@ struct UnionWith * cJSON_GetUnionWithValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.with = cJSON_GetWithValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -10977,6 +11251,7 @@ struct UnionYes * cJSON_GetUnionYesValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.yes = cJSON_GetYesValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -11017,6 +11292,7 @@ struct UnionYield * cJSON_GetUnionYieldValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.yield = cJSON_GetYieldValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/min-max-items.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/min-max-items.schema/default/TopLevel.c
index 32e3699..6e296ed 100644
--- a/base/schema-cjson/test/inputs/schema/min-max-items.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/min-max-items.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct UnionItem * cJSON_GetUnionItemValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c
index fa7e441..7ff8ffc 100644
--- a/base/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/minmaxlength.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct InUnion * cJSON_GetInUnionValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/multi-type-enum.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/multi-type-enum.schema/default/TopLevel.c
index 86179c6..c9d8b1a 100644
--- a/base/schema-cjson/test/inputs/schema/multi-type-enum.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/multi-type-enum.schema/default/TopLevel.c
@@ -45,6 +45,7 @@ struct FooUnion * cJSON_GetFooUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetFooEnumValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/mutually-recursive.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/mutually-recursive.schema/default/TopLevel.c
index 25d39ed..99d7908 100644
--- a/base/schema-cjson/test/inputs/schema/mutually-recursive.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/mutually-recursive.schema/default/TopLevel.c
@@ -24,6 +24,7 @@ struct Foo * cJSON_GetFooValue(const cJSON * j) {
                 x->value.top_level_array = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/head/schema-cjson/test/inputs/schema/prefix-items.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/prefix-items.schema/default/TopLevel.c
new file mode 100644
index 0000000..39646cc
--- /dev/null
+++ b/head/schema-cjson/test/inputs/schema/prefix-items.schema/default/TopLevel.c
@@ -0,0 +1,167 @@
+/**
+ * TopLevel.c
+ * This file has been autogenerated using quicktype https://github.com/quicktype/quicktype - DO NOT EDIT
+ */
+
+#include "TopLevel.h"
+
+struct Open * cJSON_GetOpenValue(const cJSON * j) {
+    struct Open * x = cJSON_malloc(sizeof(struct Open));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct Open));
+        if (cJSON_IsBool(j)) {
+            x->type = cJSON_Bool;
+            x->value.boolean = cJSON_IsTrue(j);
+        }
+        else if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.integer = cJSON_GetNumberValue(j);
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOpen(const struct Open * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Bool == x->type) {
+            j = cJSON_CreateBool(x->value.boolean);
+        }
+        else if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.integer);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteOpen(struct Open * x) {
+    if (NULL != x) {
+        if (cJSON_Bool == x->type) {
+        }
+        else if (cJSON_Number == x->type) {
+        }
+        cJSON_free(x);
+    }
+}
+
+struct TopLevel * cJSON_ParseTopLevel(const char * s) {
+    struct TopLevel * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetTopLevelValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
+    struct TopLevel * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct TopLevel)))) {
+            memset(x, 0, sizeof(struct TopLevel));
+            if (!cJSON_HasObjectItem(j, "open")) { cJSON_DeleteTopLevel(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "open")) {
+                if (!cJSON_IsArray(cJSON_GetObjectItemCaseSensitive(j, "open"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                list_t * x1 = list_create(false, NULL);
+                if (NULL != x1) {
+                    cJSON * e1 = NULL;
+                    cJSON * j1 = cJSON_GetObjectItemCaseSensitive(j, "open");
+                    cJSON_ArrayForEach(e1, j1) {
+                        struct Open * item1 = cJSON_GetOpenValue(e1);
+                        if (NULL == item1) { x->open = x1; cJSON_DeleteTopLevel(x); return NULL; }
+                        list_add_tail(x1, item1, sizeof(struct Open *));
+                    }
+                    x->open = x1;
+                }
+            }
+            else {
+                x->open = list_create(false, NULL);
+            }
+            if (!cJSON_HasObjectItem(j, "tuple")) { cJSON_DeleteTopLevel(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "tuple")) {
+                if (!cJSON_IsArray(cJSON_GetObjectItemCaseSensitive(j, "tuple"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                list_t * x1 = list_create(false, NULL);
+                if (NULL != x1) {
+                    cJSON * e1 = NULL;
+                    cJSON * j1 = cJSON_GetObjectItemCaseSensitive(j, "tuple");
+                    cJSON_ArrayForEach(e1, j1) {
+                        struct Open * item1 = cJSON_GetOpenValue(e1);
+                        if (NULL == item1) { x->tuple = x1; cJSON_DeleteTopLevel(x); return NULL; }
+                        list_add_tail(x1, item1, sizeof(struct Open *));
+                    }
+                    x->tuple = x1;
+                }
+            }
+            else {
+                x->tuple = list_create(false, NULL);
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            if (NULL != x->open) {
+                cJSON * j1 = cJSON_AddArrayToObject(j, "open");
+                if (NULL != j1) {
+                    struct Open * x1 = list_get_head(x->open);
+                    while (NULL != x1) {
+                        cJSON_AddItemToArray(j1, cJSON_CreateOpen(x1));
+                        x1 = list_get_next(x->open);
+                    }
+                }
+            }
+            if (NULL != x->tuple) {
+                cJSON * j1 = cJSON_AddArrayToObject(j, "tuple");
+                if (NULL != j1) {
+                    struct Open * x1 = list_get_head(x->tuple);
+                    while (NULL != x1) {
+                        cJSON_AddItemToArray(j1, cJSON_CreateOpen(x1));
+                        x1 = list_get_next(x->tuple);
+                    }
+                }
+            }
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintTopLevel(const struct TopLevel * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateTopLevel(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteTopLevel(struct TopLevel * x) {
+    if (NULL != x) {
+        if (NULL != x->open) {
+            struct Open * x1 = list_get_head(x->open);
+            while (NULL != x1) {
+                cJSON_DeleteOpen(x1);
+                x1 = list_get_next(x->open);
+            }
+            list_release(x->open);
+        }
+        if (NULL != x->tuple) {
+            struct Open * x1 = list_get_head(x->tuple);
+            while (NULL != x1) {
+                cJSON_DeleteOpen(x1);
+                x1 = list_get_next(x->tuple);
+            }
+            list_release(x->tuple);
+        }
+        cJSON_free(x);
+    }
+}
diff --git a/head/schema-cjson/test/inputs/schema/prefix-items.schema/default/TopLevel.h b/head/schema-cjson/test/inputs/schema/prefix-items.schema/default/TopLevel.h
new file mode 100644
index 0000000..711db18
--- /dev/null
+++ b/head/schema-cjson/test/inputs/schema/prefix-items.schema/default/TopLevel.h
@@ -0,0 +1,66 @@
+/**
+ * TopLevel.h
+ * This file has been autogenerated using quicktype https://github.com/quicktype/quicktype - DO NOT EDIT
+ * This file depends of https://github.com/DaveGamble/cJSON, https://github.com/joelguittet/c-list and https://github.com/joelguittet/c-hashtable
+ * To parse json data from json string use the following: struct <type> * data = cJSON_Parse<type>(<string>);
+ * To get json data from cJSON object use the following: struct <type> * data = cJSON_Get<type>Value(<cjson>);
+ * To get cJSON object from json data use the following: cJSON * cjson = cJSON_Create<type>(<data>);
+ * To print json string from json data use the following: char * string = cJSON_Print<type>(<data>);
+ * To delete json data use the following: cJSON_Delete<type>(<data>);
+ */
+
+#ifndef __TOPLEVEL_H__
+#define __TOPLEVEL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <regex.h>
+#include <cJSON.h>
+#include <hashtable.h>
+#include <list.h>
+
+#ifndef cJSON_Bool
+#define cJSON_Bool (cJSON_True | cJSON_False)
+#endif
+#ifndef cJSON_Map
+#define cJSON_Map (1 << 16)
+#endif
+#ifndef cJSON_Enum
+#define cJSON_Enum (1 << 17)
+#endif
+
+struct Open {
+    int type;
+    union {
+        bool boolean;
+        int64_t integer;
+    } value;
+};
+
+struct TopLevel {
+    list_t * open;
+    list_t * tuple;
+};
+
+#define cJSON_IsOpen(j) (cJSON_IsBool(j) || cJSON_IsNumber(j))
+struct Open * cJSON_GetOpenValue(const cJSON * j);
+cJSON * cJSON_CreateOpen(const struct Open * x);
+void cJSON_DeleteOpen(struct Open * x);
+
+struct TopLevel * cJSON_ParseTopLevel(const char * s);
+struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j);
+cJSON * cJSON_CreateTopLevel(const struct TopLevel * x);
+char * cJSON_PrintTopLevel(const struct TopLevel * x);
+void cJSON_DeleteTopLevel(struct TopLevel * x);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TOPLEVEL_H__ */
diff --git a/base/schema-cjson/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.c
index 7177d60..5f61bd2 100644
--- a/base/schema-cjson/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/rust-cycle-breaker-union.schema/default/TopLevel.c
@@ -20,6 +20,7 @@ struct Next * cJSON_GetNextValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/head/schema-cjson/test/inputs/schema/single-value-enum.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/single-value-enum.schema/default/TopLevel.c
new file mode 100644
index 0000000..ca16ec0
--- /dev/null
+++ b/head/schema-cjson/test/inputs/schema/single-value-enum.schema/default/TopLevel.c
@@ -0,0 +1,78 @@
+/**
+ * TopLevel.c
+ * This file has been autogenerated using quicktype https://github.com/quicktype/quicktype - DO NOT EDIT
+ */
+
+#include "TopLevel.h"
+
+enum Kind cJSON_GetKindValue(const cJSON * j) {
+    enum Kind x = 0;
+    if (NULL != j) {
+        if (!strcmp(cJSON_GetStringValue(j), "only")) x = KIND_ONLY;
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateKind(const enum Kind x) {
+    cJSON * j = NULL;
+    switch (x) {
+        case KIND_ONLY: j = cJSON_CreateString("only"); break;
+    }
+    return j;
+}
+
+struct TopLevel * cJSON_ParseTopLevel(const char * s) {
+    struct TopLevel * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetTopLevelValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
+    struct TopLevel * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct TopLevel)))) {
+            memset(x, 0, sizeof(struct TopLevel));
+            if (!cJSON_HasObjectItem(j, "kind")) { cJSON_DeleteTopLevel(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "kind")) {
+                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "kind"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "kind")) || 0 == cJSON_GetKindValue(cJSON_GetObjectItemCaseSensitive(j, "kind"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->kind = cJSON_GetKindValue(cJSON_GetObjectItemCaseSensitive(j, "kind"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddItemToObject(j, "kind", cJSON_CreateKind(x->kind));
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintTopLevel(const struct TopLevel * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateTopLevel(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteTopLevel(struct TopLevel * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
diff --git a/head/schema-cjson/test/inputs/schema/single-value-enum.schema/default/TopLevel.h b/head/schema-cjson/test/inputs/schema/single-value-enum.schema/default/TopLevel.h
new file mode 100644
index 0000000..ec330d4
--- /dev/null
+++ b/head/schema-cjson/test/inputs/schema/single-value-enum.schema/default/TopLevel.h
@@ -0,0 +1,59 @@
+/**
+ * TopLevel.h
+ * This file has been autogenerated using quicktype https://github.com/quicktype/quicktype - DO NOT EDIT
+ * This file depends of https://github.com/DaveGamble/cJSON, https://github.com/joelguittet/c-list and https://github.com/joelguittet/c-hashtable
+ * To parse json data from json string use the following: struct <type> * data = cJSON_Parse<type>(<string>);
+ * To get json data from cJSON object use the following: struct <type> * data = cJSON_Get<type>Value(<cjson>);
+ * To get cJSON object from json data use the following: cJSON * cjson = cJSON_Create<type>(<data>);
+ * To print json string from json data use the following: char * string = cJSON_Print<type>(<data>);
+ * To delete json data use the following: cJSON_Delete<type>(<data>);
+ */
+
+#ifndef __TOPLEVEL_H__
+#define __TOPLEVEL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <regex.h>
+#include <cJSON.h>
+#include <hashtable.h>
+#include <list.h>
+
+#ifndef cJSON_Bool
+#define cJSON_Bool (cJSON_True | cJSON_False)
+#endif
+#ifndef cJSON_Map
+#define cJSON_Map (1 << 16)
+#endif
+#ifndef cJSON_Enum
+#define cJSON_Enum (1 << 17)
+#endif
+
+enum Kind {
+    KIND_ONLY = 1,
+};
+
+struct TopLevel {
+    enum Kind kind;
+};
+
+enum Kind cJSON_GetKindValue(const cJSON * j);
+cJSON * cJSON_CreateKind(const enum Kind x);
+
+struct TopLevel * cJSON_ParseTopLevel(const char * s);
+struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j);
+cJSON * cJSON_CreateTopLevel(const struct TopLevel * x);
+char * cJSON_PrintTopLevel(const struct TopLevel * x);
+void cJSON_DeleteTopLevel(struct TopLevel * x);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TOPLEVEL_H__ */
diff --git a/base/schema-cjson/test/inputs/schema/tuple.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/tuple.schema/default/TopLevel.c
index 725c190..7c091a1 100644
--- a/base/schema-cjson/test/inputs/schema/tuple.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/tuple.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct Tuple * cJSON_GetTupleValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.c
index eb3e4b7..a0e3212 100644
--- a/base/schema-cjson/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/unevaluated-properties.schema/default/TopLevel.c
@@ -43,6 +43,7 @@ struct Closed * cJSON_GetClosedValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.closed_class = cJSON_GetClosedClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/union-list.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/union-list.schema/default/TopLevel.c
index c98163e..436525b 100644
--- a/base/schema-cjson/test/inputs/schema/union-list.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/union-list.schema/default/TopLevel.c
@@ -17,6 +17,7 @@ struct UnionList * cJSON_GetUnionListValue(const cJSON * j) {
             x->type = cJSON_Number;
             x->value.number = cJSON_GetNumberValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/base/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c
index d68f647..c837afe 100644
--- a/base/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/vega-lite.schema/default/TopLevel.c
@@ -1007,6 +1007,7 @@ struct Autosize * cJSON_GetAutosizeValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetAutosizeTypeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1047,6 +1048,7 @@ struct FontWeightUnion * cJSON_GetFontWeightUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetFontWeightValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1086,6 +1088,7 @@ struct Label * cJSON_GetLabelValue(const cJSON * j) {
             x->type = cJSON_Bool;
             x->value.boolean = cJSON_IsTrue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1125,6 +1128,7 @@ struct LabelOverlapUnion * cJSON_GetLabelOverlapUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetLabelOverlapEnumValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1164,6 +1168,7 @@ struct TitleFontWeight * cJSON_GetTitleFontWeightValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1204,6 +1209,7 @@ struct Padding * cJSON_GetPaddingValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.padding_class = cJSON_GetPaddingClassValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1251,6 +1257,7 @@ struct RangeConfigValue * cJSON_GetRangeConfigValueValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.vg_scheme = cJSON_GetVgSchemeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1307,6 +1314,7 @@ struct Translate * cJSON_GetTranslateValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1354,6 +1362,7 @@ struct ParseUnion * cJSON_GetParseUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetParseEnumValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1432,6 +1441,7 @@ struct ValuesValue * cJSON_GetValuesValueValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1524,6 +1534,7 @@ struct Values * cJSON_GetValuesValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1609,6 +1620,7 @@ struct Bin * cJSON_GetBinValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.bin_params = cJSON_GetBinParamsValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1649,6 +1661,7 @@ struct SelectionOperand * cJSON_GetSelectionOperandValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1690,6 +1703,7 @@ struct Day * cJSON_GetDayValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1730,6 +1744,7 @@ struct Month * cJSON_GetMonthValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1778,6 +1793,7 @@ struct Equal * cJSON_GetEqualValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1832,6 +1848,7 @@ struct RangeElement * cJSON_GetRangeElementValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.date_time = cJSON_GetDateTimeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1875,6 +1892,7 @@ struct LogicalOperandPredicate * cJSON_GetLogicalOperandPredicateValue(const cJS
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1920,6 +1938,7 @@ struct ConditionalValueDefValue * cJSON_GetConditionalValueDefValueValue(const c
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -1965,6 +1984,7 @@ struct Field * cJSON_GetFieldValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2010,6 +2030,7 @@ struct LegendValue * cJSON_GetLegendValueValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2067,6 +2088,7 @@ struct DomainUnion * cJSON_GetDomainUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetDomainValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2128,6 +2150,7 @@ struct InterpolateUnion * cJSON_GetInterpolateUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetInterpolateValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2176,6 +2199,7 @@ struct NiceUnion * cJSON_GetNiceUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetNiceTimeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2233,6 +2257,7 @@ struct ScaleRange * cJSON_GetScaleRangeValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2289,6 +2314,7 @@ struct Scheme * cJSON_GetSchemeValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2333,6 +2359,7 @@ struct SortUnion * cJSON_GetSortUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetSortEnumValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2383,6 +2410,7 @@ struct ColorCondition * cJSON_GetColorConditionValue(const cJSON * j) {
                 x->value.conditional_value_def_array = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2446,6 +2474,7 @@ struct Detail * cJSON_GetDetailValue(const cJSON * j) {
                 x->value.field_def_array = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2509,6 +2538,7 @@ struct HrefCondition * cJSON_GetHrefConditionValue(const cJSON * j) {
                 x->value.conditional_value_def_array = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2572,6 +2602,7 @@ struct Order * cJSON_GetOrderValue(const cJSON * j) {
                 x->value.order_field_def_array = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2635,6 +2666,7 @@ struct TextCondition * cJSON_GetTextConditionValue(const cJSON * j) {
                 x->value.conditional_value_def_array = x1;
             }
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2691,6 +2723,7 @@ struct AxisValue * cJSON_GetAxisValueValue(const cJSON * j) {
             x->type = cJSON_Object;
             x->value.date_time = cJSON_GetDateTimeValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2738,6 +2771,7 @@ struct Style * cJSON_GetStyleValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2794,6 +2828,7 @@ struct AnyMark * cJSON_GetAnyMarkValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetMarkValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2841,6 +2876,7 @@ struct BindUnion * cJSON_GetBindUnionValue(const cJSON * j) {
             x->type = cJSON_Enum;
             x->value.purple_enum = cJSON_GetBindEnumValue(j);
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
@@ -2906,6 +2942,7 @@ struct Title * cJSON_GetTitleValue(const cJSON * j) {
             x->type = cJSON_String;
             x->value.string = strdup(cJSON_GetStringValue(j));
         }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
     }
     return x;
 }
diff --git a/head/schema-cplusplus/test/inputs/schema/single-value-enum.schema/default/quicktype.hpp b/head/schema-cplusplus/test/inputs/schema/single-value-enum.schema/default/quicktype.hpp
new file mode 100644
index 0000000..9b96ef0
--- /dev/null
+++ b/head/schema-cplusplus/test/inputs/schema/single-value-enum.schema/default/quicktype.hpp
@@ -0,0 +1,79 @@
+//  To parse this JSON data, first install
+//
+//      json.hpp  https://github.com/nlohmann/json
+//
+//  Then include this file, and then do
+//
+//     TopLevel data = nlohmann::json::parse(jsonString);
+
+#pragma once
+
+#include "json.hpp"
+
+#include <optional>
+#include <stdexcept>
+#include <regex>
+
+namespace quicktype {
+    using nlohmann::json;
+
+    #ifndef NLOHMANN_UNTYPED_quicktype_HELPER
+    #define NLOHMANN_UNTYPED_quicktype_HELPER
+    inline json get_untyped(const json & j, const char * property) {
+        if (j.find(property) != j.end()) {
+            return j.at(property).get<json>();
+        }
+        return json();
+    }
+
+    inline json get_untyped(const json & j, std::string property) {
+        return get_untyped(j, property.data());
+    }
+    #endif
+
+    enum class Kind : int { ONLY };
+
+    class TopLevel {
+        public:
+        TopLevel() = default;
+        virtual ~TopLevel() = default;
+
+        private:
+        Kind kind;
+
+        public:
+        const Kind & get_kind() const { return kind; }
+        Kind & get_mutable_kind() { return kind; }
+        void set_kind(const Kind & value) { this->kind = value; }
+    };
+}
+
+namespace quicktype {
+    void from_json(const json & j, TopLevel & x);
+    void to_json(json & j, const TopLevel & x);
+
+    void from_json(const json & j, Kind & x);
+    void to_json(json & j, const Kind & x);
+
+    inline void from_json(const json & j, TopLevel& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        x.set_kind(j.at("kind").get<Kind>());
+    }
+
+    inline void to_json(json & j, const TopLevel & x) {
+        j = json::object();
+        j["kind"] = x.get_kind();
+    }
+
+    inline void from_json(const json & j, Kind & x) {
+        if (j == "only") x = Kind::ONLY;
+        else { throw std::runtime_error("Cannot deserialize to enumeration \"Kind\""); }
+    }
+
+    inline void to_json(json & j, const Kind & x) {
+        switch (x) {
+            case Kind::ONLY: j = "only"; break;
+            default: throw std::runtime_error("Unexpected value in enumeration \"Kind\": " + std::to_string(static_cast<int>(x)));
+        }
+    }
+}
diff --git a/head/schema-crystal/test/inputs/schema/single-value-enum.schema/default/TopLevel.cr b/head/schema-crystal/test/inputs/schema/single-value-enum.schema/default/TopLevel.cr
new file mode 100644
index 0000000..7e3e5bc
--- /dev/null
+++ b/head/schema-crystal/test/inputs/schema/single-value-enum.schema/default/TopLevel.cr
@@ -0,0 +1,7 @@
+require "json"
+
+class TopLevel
+  include JSON::Serializable
+
+  property kind : String
+end
diff --git a/head/schema-csharp/test/inputs/schema/single-value-enum.schema/default/QuickType.cs b/head/schema-csharp/test/inputs/schema/single-value-enum.schema/default/QuickType.cs
new file mode 100644
index 0000000..595c2e6
--- /dev/null
+++ b/head/schema-csharp/test/inputs/schema/single-value-enum.schema/default/QuickType.cs
@@ -0,0 +1,98 @@
+// <auto-generated />
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+//    using QuickType;
+//
+//    var topLevel = TopLevel.FromJson(jsonString);
+#nullable enable
+#pragma warning disable CS8618
+#pragma warning disable CS8601
+#pragma warning disable CS8602
+#pragma warning disable CS8603
+#pragma warning disable CS8604
+#pragma warning disable CS8625
+#pragma warning disable CS8765
+
+namespace QuickType
+{
+    using System;
+    using System.Collections.Generic;
+
+    using System.Globalization;
+    using Newtonsoft.Json;
+    using Newtonsoft.Json.Converters;
+
+    public partial class TopLevel
+    {
+        [JsonProperty("kind", Required = Required.Always)]
+        public Kind Kind { get; set; }
+    }
+
+    public enum Kind { Only };
+
+    public partial class TopLevel
+    {
+        public static TopLevel FromJson(string json) => JsonConvert.DeserializeObject<TopLevel>(json, QuickType.Converter.Settings);
+    }
+
+    public static partial class Serialize
+    {
+        public static string ToJson(this TopLevel self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
+    }
+
+    internal static partial class Converter
+    {
+        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+        {
+            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+            DateParseHandling = DateParseHandling.None,
+            Converters =
+            {
+                KindConverter.Singleton,
+                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+            },
+        };
+    }
+
+    internal class KindConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(Kind) || t == typeof(Kind?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            if (reader.TokenType == JsonToken.Null) return null;
+            var value = serializer.Deserialize<string>(reader);
+            if (value == "only")
+            {
+                return Kind.Only;
+            }
+            throw new Exception("Cannot unmarshal type Kind");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            if (untypedValue == null)
+            {
+                serializer.Serialize(writer, null);
+                return;
+            }
+            var value = (Kind)untypedValue;
+            if (value == Kind.Only)
+            {
+                serializer.Serialize(writer, "only");
+                return;
+            }
+            throw new Exception("Cannot marshal type Kind");
+        }
+
+        public static readonly KindConverter Singleton = new KindConverter();
+    }
+}
+#pragma warning restore CS8618
+#pragma warning restore CS8601
+#pragma warning restore CS8602
+#pragma warning restore CS8603
+#pragma warning restore CS8604
+#pragma warning restore CS8625
+#pragma warning restore CS8765
diff --git a/head/schema-csharp-SystemTextJson/test/inputs/schema/single-value-enum.schema/default/QuickType.cs b/head/schema-csharp-SystemTextJson/test/inputs/schema/single-value-enum.schema/default/QuickType.cs
new file mode 100644
index 0000000..6aaf19d
--- /dev/null
+++ b/head/schema-csharp-SystemTextJson/test/inputs/schema/single-value-enum.schema/default/QuickType.cs
@@ -0,0 +1,196 @@
+// <auto-generated />
+//
+// To parse this JSON data, add NuGet 'System.Text.Json' then do:
+//
+//    using QuickType;
+//
+//    var topLevel = TopLevel.FromJson(jsonString);
+#nullable enable
+#pragma warning disable CS8618
+#pragma warning disable CS8601
+#pragma warning disable CS8602
+#pragma warning disable CS8603
+
+namespace QuickType
+{
+    using System;
+    using System.Collections.Generic;
+
+    using System.Text.Json;
+    using System.Text.Json.Serialization;
+    using System.Globalization;
+
+    public partial class TopLevel
+    {
+        [JsonRequired]
+        [JsonPropertyName("kind")]
+        public Kind Kind { get; set; }
+    }
+
+    public enum Kind { Only };
+
+    public partial class TopLevel
+    {
+        public static TopLevel FromJson(string json) => global::System.Text.Json.JsonSerializer.Deserialize<TopLevel>(json, QuickType.Converter.Settings);
+    }
+
+    public static partial class Serialize
+    {
+        public static string ToJson(this TopLevel self) => JsonSerializer.Serialize(self, QuickType.Converter.Settings);
+    }
+
+    internal static partial class Converter
+    {
+        public static readonly JsonSerializerOptions Settings = new(JsonSerializerDefaults.General)
+        {
+            Converters =
+            {
+                KindConverter.Singleton,
+                new DateOnlyConverter(),
+                new TimeOnlyConverter(),
+                IsoDateTimeOffsetConverter.Singleton
+            },
+        };
+    }
+
+    internal class KindConverter : JsonConverter<Kind>
+    {
+        public override bool CanConvert(Type t) => t == typeof(Kind);
+
+        public override Kind Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            var value = reader.GetString();
+            if (value == "only")
+            {
+                return Kind.Only;
+            }
+            throw new JsonException("Cannot unmarshal type Kind");
+        }
+
+        public override void Write(Utf8JsonWriter writer, Kind value, JsonSerializerOptions options)
+        {
+            if (value == Kind.Only)
+            {
+                JsonSerializer.Serialize(writer, "only", options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type Kind");
+        }
+
+        public static readonly KindConverter Singleton = new KindConverter();
+    }
+    
+    public class DateOnlyConverter : JsonConverter<DateOnly>
+    {
+        private readonly string serializationFormat;
+        public DateOnlyConverter() : this(null) { }
+
+        public DateOnlyConverter(string? serializationFormat)
+        {
+                this.serializationFormat = serializationFormat ?? "yyyy-MM-dd";
+        }
+
+        public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+                var value = reader.GetString();
+                return DateOnly.Parse(value!);
+        }
+
+        public override void Write(Utf8JsonWriter writer, DateOnly value, JsonSerializerOptions options)
+                => writer.WriteStringValue(value.ToString(serializationFormat));
+    }
+
+    public class TimeOnlyConverter : JsonConverter<TimeOnly>
+    {
+        private readonly string serializationFormat;
+
+        public TimeOnlyConverter() : this(null) { }
+
+        public TimeOnlyConverter(string? serializationFormat)
+        {
+                this.serializationFormat = serializationFormat ?? "HH:mm:ss.fff";
+        }
+
+        public override TimeOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+                var value = reader.GetString();
+                return TimeOnly.Parse(value!);
+        }
+
+        public override void Write(Utf8JsonWriter writer, TimeOnly value, JsonSerializerOptions options)
+                => writer.WriteStringValue(value.ToString(serializationFormat));
+    }
+
+    internal class IsoDateTimeOffsetConverter : JsonConverter<DateTimeOffset>
+    {
+        public override bool CanConvert(Type t) => t == typeof(DateTimeOffset);
+
+        private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
+
+        private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
+        private string? _dateTimeFormat;
+        private CultureInfo? _culture;
+
+        public DateTimeStyles DateTimeStyles
+        {
+                get => _dateTimeStyles;
+                set => _dateTimeStyles = value;
+        }
+
+        public string? DateTimeFormat
+        {
+                get => _dateTimeFormat ?? string.Empty;
+                set => _dateTimeFormat = (string.IsNullOrEmpty(value)) ? null : value;
+        }
+
+        public CultureInfo Culture
+        {
+                get => _culture ?? CultureInfo.CurrentCulture;
+                set => _culture = value;
+        }
+
+        public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
+        {
+                string text;
+
+
+                if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
+                        || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
+                {
+                        value = value.ToUniversalTime();
+                }
+
+                text = value.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
+
+                writer.WriteStringValue(text);
+        }
+
+        public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+                string? dateText = reader.GetString();
+
+                if (string.IsNullOrEmpty(dateText) == false)
+                {
+                        if (!string.IsNullOrEmpty(_dateTimeFormat))
+                        {
+                                return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
+                        }
+                        else
+                        {
+                                return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
+                        }
+                }
+                else
+                {
+                        return default(DateTimeOffset);
+                }
+        }
+
+
+        public static readonly IsoDateTimeOffsetConverter Singleton = new IsoDateTimeOffsetConverter();
+    }
+}
+#pragma warning restore CS8618
+#pragma warning restore CS8601
+#pragma warning restore CS8602
+#pragma warning restore CS8603
diff --git a/head/schema-csharp-records/test/inputs/schema/single-value-enum.schema/default/QuickType.cs b/head/schema-csharp-records/test/inputs/schema/single-value-enum.schema/default/QuickType.cs
new file mode 100644
index 0000000..5f883c2
--- /dev/null
+++ b/head/schema-csharp-records/test/inputs/schema/single-value-enum.schema/default/QuickType.cs
@@ -0,0 +1,98 @@
+// <auto-generated />
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+//    using QuickType;
+//
+//    var topLevel = TopLevel.FromJson(jsonString);
+#nullable enable
+#pragma warning disable CS8618
+#pragma warning disable CS8601
+#pragma warning disable CS8602
+#pragma warning disable CS8603
+#pragma warning disable CS8604
+#pragma warning disable CS8625
+#pragma warning disable CS8765
+
+namespace QuickType
+{
+    using System;
+    using System.Collections.Generic;
+
+    using System.Globalization;
+    using Newtonsoft.Json;
+    using Newtonsoft.Json.Converters;
+
+    public partial record TopLevel
+    {
+        [JsonProperty("kind", Required = Required.Always)]
+        public Kind Kind { get; set; }
+    }
+
+    public enum Kind { Only };
+
+    public partial record TopLevel
+    {
+        public static TopLevel FromJson(string json) => JsonConvert.DeserializeObject<TopLevel>(json, QuickType.Converter.Settings);
+    }
+
+    public static partial class Serialize
+    {
+        public static string ToJson(this TopLevel self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
+    }
+
+    internal static partial class Converter
+    {
+        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+        {
+            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+            DateParseHandling = DateParseHandling.None,
+            Converters =
+            {
+                KindConverter.Singleton,
+                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+            },
+        };
+    }
+
+    internal class KindConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(Kind) || t == typeof(Kind?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            if (reader.TokenType == JsonToken.Null) return null;
+            var value = serializer.Deserialize<string>(reader);
+            if (value == "only")
+            {
+                return Kind.Only;
+            }
+            throw new Exception("Cannot unmarshal type Kind");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            if (untypedValue == null)
+            {
+                serializer.Serialize(writer, null);
+                return;
+            }
+            var value = (Kind)untypedValue;
+            if (value == Kind.Only)
+            {
+                serializer.Serialize(writer, "only");
+                return;
+            }
+            throw new Exception("Cannot marshal type Kind");
+        }
+
+        public static readonly KindConverter Singleton = new KindConverter();
+    }
+}
+#pragma warning restore CS8618
+#pragma warning restore CS8601
+#pragma warning restore CS8602
+#pragma warning restore CS8603
+#pragma warning restore CS8604
+#pragma warning restore CS8625
+#pragma warning restore CS8765
diff --git a/head/schema-dart/test/inputs/schema/single-value-enum.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/single-value-enum.schema/default/TopLevel.dart
new file mode 100644
index 0000000..06c8c0c
--- /dev/null
+++ b/head/schema-dart/test/inputs/schema/single-value-enum.schema/default/TopLevel.dart
@@ -0,0 +1,45 @@
+// To parse this JSON data, do
+//
+//     final topLevel = topLevelFromJson(jsonString);
+
+import 'dart:convert';
+
+TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
+
+String topLevelToJson(TopLevel data) => json.encode(data.toJson());
+
+class TopLevel {
+    final Kind kind;
+
+    TopLevel({
+        required this.kind,
+    });
+
+    factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        kind: kindValues.map[json["kind"]]!,
+    );
+
+    Map<String, dynamic> toJson() => {
+        "kind": kindValues.reverse[kind],
+    };
+}
+
+enum Kind {
+    ONLY
+}
+
+final kindValues = EnumValues({
+    "only": Kind.ONLY
+});
+
+class EnumValues<T> {
+    Map<String, T> map;
+    late Map<T, String> reverseMap;
+
+    EnumValues(this.map);
+
+    Map<T, String> get reverse {
+            reverseMap = map.map((k, v) => MapEntry(v, k));
+            return reverseMap;
+    }
+}
diff --git a/head/schema-elixir/test/inputs/schema/single-value-enum.schema/default/QuickType.ex b/head/schema-elixir/test/inputs/schema/single-value-enum.schema/default/QuickType.ex
new file mode 100644
index 0000000..fef4d44
--- /dev/null
+++ b/head/schema-elixir/test/inputs/schema/single-value-enum.schema/default/QuickType.ex
@@ -0,0 +1,84 @@
+# This file was autogenerated using quicktype https://github.com/quicktype/quicktype
+#
+# Add Jason to your mix.exs
+#
+# Decode a JSON string: TopLevel.from_json(data)
+# Encode into a JSON string: TopLevel.to_json(struct)
+
+defmodule Kind do
+  @valid_enum_members [
+    :only,
+  ]
+
+  def valid_atom?(value), do: value in @valid_enum_members
+
+  def valid_atom_string?(value) do
+    try do
+        atom = String.to_existing_atom(value)
+        atom in @valid_enum_members
+    rescue
+        ArgumentError -> false
+    end
+  end
+
+  def encode(value) do
+    if valid_atom?(value) do
+        Atom.to_string(value)
+    else
+        {:error, "Unexpected value when encoding atom: #{inspect(value)}"}
+    end
+  end
+
+  def decode(value) do
+    if valid_atom_string?(value) do
+        String.to_existing_atom(value)
+    else
+        {:error, "Unexpected value when decoding atom: #{inspect(value)}"}
+    end
+  end
+
+  def from_json(json) do
+    json
+    |> Jason.decode!()
+    |> decode()
+  end
+
+  def to_json(data) do
+    data
+    |> encode()
+    |> Jason.encode!()
+  end
+end
+
+defmodule TopLevel do
+  @enforce_keys [:kind]
+  defstruct [:kind]
+
+  @type t :: %__MODULE__{
+          kind: Kind.t()
+        }
+
+  def from_map(m) do
+    %TopLevel{
+      kind: Kind.decode(m["kind"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "kind" => Kind.encode(struct.kind),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
diff --git a/head/schema-elm/test/inputs/schema/single-value-enum.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/single-value-enum.schema/default/QuickType.elm
new file mode 100644
index 0000000..7d47082
--- /dev/null
+++ b/head/schema-elm/test/inputs/schema/single-value-enum.schema/default/QuickType.elm
@@ -0,0 +1,74 @@
+-- To decode the JSON data, add this file to your project, run
+--
+--     elm install NoRedInk/elm-json-decode-pipeline
+--
+-- add these imports
+--
+--     import Json.Decode exposing (decodeString)
+--     import QuickType exposing (quickType)
+--
+-- and you're off to the races with
+--
+--     decodeString quickType myJsonString
+
+module QuickType exposing
+    ( QuickType
+    , quickTypeToString
+    , quickType
+    , Kind(..)
+    )
+
+import Json.Decode as Jdec
+import Json.Decode.Pipeline as Jpipe
+import Json.Encode as Jenc
+import Dict exposing (Dict)
+
+type alias QuickType =
+    { kind : Kind
+    }
+
+type Kind
+    = Only
+
+-- decoders and encoders
+optionalField key decoder fallback =
+    Jdec.dict Jdec.value
+        |> Jdec.andThen (\m ->
+            case Dict.get key m of
+                Nothing -> Jdec.succeed fallback
+                Just x -> Jdec.decodeValue decoder x |> Result.map Jdec.succeed |> Result.withDefault (Jdec.fail ("Invalid " ++ key)))
+
+quickTypeToString : QuickType -> String
+quickTypeToString r = Jenc.encode 0 (encodeQuickType r)
+
+quickType : Jdec.Decoder QuickType
+quickType =
+    Jdec.succeed QuickType
+        |> Jpipe.required "kind" kind
+
+encodeQuickType : QuickType -> Jenc.Value
+encodeQuickType x =
+    Jenc.object
+        [ ("kind", encodeKind x.kind)
+        ]
+
+kind : Jdec.Decoder Kind
+kind =
+    Jdec.string
+        |> Jdec.andThen (\str ->
+            case str of
+                "only" -> Jdec.succeed Only
+                somethingElse -> Jdec.fail <| "Invalid Kind: " ++ somethingElse
+        )
+
+encodeKind : Kind -> Jenc.Value
+encodeKind x = case x of
+    Only -> Jenc.string "only"
+
+--- encoder helpers
+
+makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
+makeNullableEncoder f m =
+    case m of
+    Just x -> f x
+    Nothing -> Jenc.null
diff --git a/head/schema-flow/test/inputs/schema/single-value-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/single-value-enum.schema/default/TopLevel.js
new file mode 100644
index 0000000..04038f7
--- /dev/null
+++ b/head/schema-flow/test/inputs/schema/single-value-enum.schema/default/TopLevel.js
@@ -0,0 +1,216 @@
+// @flow
+
+// To parse this data:
+//
+//   const Convert = require("./TopLevel");
+//
+//   const topLevel = Convert.toTopLevel(json);
+//
+// These functions will throw an error if the JSON doesn't
+// match the expected interface, even if the JSON is valid.
+
+export type TopLevel = {
+    kind: Kind;
+    [property: string]: mixed;
+};
+
+export type Kind =
+      "only";
+
+// Converts JSON strings to/from your types
+// and asserts the results of JSON.parse at runtime
+function toTopLevel(json: string): TopLevel {
+    return cast(JSON.parse(json), r("TopLevel"));
+}
+
+function topLevelToJson(value: TopLevel): string {
+    return JSON.stringify(uncast(value, r("TopLevel")), null, 2);
+}
+
+function invalidValue(typ: any, val: any, key: any, parent: any = '') {
+    const prettyTyp = prettyTypeName(typ);
+    const parentText = parent ? ` on ${parent}` : '';
+    const keyText = key ? ` for key "${key}"` : '';
+    throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
+}
+
+function prettyTypeName(typ: any): string {
+    if (Array.isArray(typ)) {
+        if (typ.length === 2 && typ[0] === undefined) {
+            return `an optional ${prettyTypeName(typ[1])}`;
+        } else {
+            return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`;
+        }
+    } else if (typeof typ === "object" && typ.literal !== undefined) {
+        return typ.literal;
+    } else {
+        return typeof typ;
+    }
+}
+
+function jsonToJSProps(typ: any): any {
+    if (typ.jsonToJS === undefined) {
+        const map: any = {};
+        typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });
+        typ.jsonToJS = map;
+    }
+    return typ.jsonToJS;
+}
+
+function jsToJSONProps(typ: any): any {
+    if (typ.jsToJSON === undefined) {
+        const map: any = {};
+        typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });
+        typ.jsToJSON = map;
+    }
+    return typ.jsToJSON;
+}
+
+function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any {
+    function transformPrimitive(typ: string, val: any): any {
+        if (typeof typ === typeof val) return val;
+        return invalidValue(typ, val, key, parent);
+    }
+
+    function transformUnion(typs: any[], val: any): any {
+        // val must validate against one typ in typs
+        const l = typs.length;
+        for (let i = 0; i < l; i++) {
+            const typ = typs[i];
+            try {
+                return transform(val, typ, getProps);
+            } catch (_) {}
+        }
+        return invalidValue(typs, val, key, parent);
+    }
+
+    function transformEnum(cases: string[], val: any): any {
+        if (cases.indexOf(val) !== -1) return val;
+        return invalidValue(cases.map(a => { return l(a); }), val, key, parent);
+    }
+
+    function transformArray(typ: any, val: any): any {
+        // val must be an array with no invalid elements
+        if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
+
+        return val.map(el => transform(el, typ, getProps));
+    }
+
+    function transformDate(val: any): any {
+        if (val === null) {
+            return null;
+        }
+        const d = new Date(val);
+        if (isNaN(d.valueOf())) {
+            return invalidValue(l("Date"), val, key, parent);
+        }
+        return d;
+    }
+
+    function transformObject(props: { [k: string]: any }, additional: any, val: any): any {
+        if (val === null || typeof val !== "object" || Array.isArray(val)) {
+            return invalidValue(l(ref || "object"), val, key, parent);
+        }
+        const result: any = {};
+        Object.getOwnPropertyNames(props).forEach(key => {
+            const prop = props[key];
+            const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
+            result[prop.key] = transform(v, prop.typ, getProps, key, ref);
+        });
+        Object.getOwnPropertyNames(val).forEach(key => {
+            if (!Object.prototype.hasOwnProperty.call(props, key)) {
+                result[key] = transform(val[key], additional, getProps, key, ref);
+            }
+        });
+        return result;
+    }
+
+    if (typ === "any") return val;
+    if (typ === null) {
+        if (val === null) return val;
+        return invalidValue(typ, val, key, parent);
+    }
+    if (typ === false) return invalidValue(typ, val, key, parent);
+    let ref: any = undefined;
+    while (typeof typ === "object" && typ.ref !== undefined) {
+        ref = typ.ref;
+        typ = typeMap[typ.ref];
+    }
+    if (Array.isArray(typ)) return transformEnum(typ, val);
+    if (typeof typ === "object") {
+        return typ.hasOwnProperty("pattern")      ? typeof val === "string" && new RegExp(typ.pattern).test(val) ? val : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("string")       ? typeof val === "string" && (typ.min === undefined || val.length >= typ.min) && (typ.max === undefined || val.length <= typ.max) ? transform(val, typ.string, getProps, key, parent) : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("number")       ? typeof val === "number" && (typ.min === undefined || val >= typ.min) && (typ.max === undefined || val <= typ.max) ? transform(val, typ.number, getProps, key, parent) : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("integer")      ? typeof val === "number" && val % 1 === 0 ? val : invalidValue(l("integer"), val, key, parent)
+            : typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val)
+            : typ.hasOwnProperty("arrayItems")    ? transformArray(typ.arrayItems, val)
+            : typ.hasOwnProperty("props")         ? transformObject(getProps(typ), typ.additional, val)
+            : invalidValue(typ, val, key, parent);
+    }
+    // Numbers can be parsed by Date but shouldn't be.
+    if (typ === Date && typeof val !== "number") return transformDate(val);
+    return transformPrimitive(typ, val);
+}
+
+function cast<T>(val: any, typ: any): T {
+    return transform(val, typ, jsonToJSProps);
+}
+
+function uncast<T>(val: T, typ: any): any {
+    return transform(val, typ, jsToJSONProps);
+}
+
+function l(typ: any) {
+    return { literal: typ };
+}
+
+function a(typ: any) {
+    return { arrayItems: typ };
+}
+
+function i(typ: any) {
+    return { integer: typ };
+}
+
+function p(pattern: any) {
+    return { pattern };
+}
+
+function s(typ: any, min: any, max: any) {
+    return { string: typ, min, max };
+}
+
+function n(typ: any, min: any, max: any) {
+    return { number: typ, min, max };
+}
+
+function u(...typs: any[]) {
+    return { unionMembers: typs };
+}
+
+function o(props: any[], additional: any) {
+    return { props, additional };
+}
+
+function m(additional: any) {
+    const props: any[] = [];
+    return { props, additional };
+}
+
+function r(name: string) {
+    return { ref: name };
+}
+
+const typeMap: any = {
+    "TopLevel": o([
+        { json: "kind", js: "kind", typ: r("Kind") },
+    ], "any"),
+    "Kind": [
+        "only",
+    ],
+};
+
+module.exports = {
+    "topLevelToJson": topLevelToJson,
+    "toTopLevel": toTopLevel,
+};
diff --git a/head/schema-golang/test/inputs/schema/single-value-enum.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/single-value-enum.schema/default/quicktype.go
new file mode 100644
index 0000000..4c23069
--- /dev/null
+++ b/head/schema-golang/test/inputs/schema/single-value-enum.schema/default/quicktype.go
@@ -0,0 +1,41 @@
+// Code generated from JSON Schema using quicktype. DO NOT EDIT.
+// To parse and unparse this JSON data, add this code to your project and do:
+//
+//    topLevel, err := UnmarshalTopLevel(bytes)
+//    bytes, err = topLevel.Marshal()
+
+package main
+
+import "encoding/json"
+
+func UnmarshalTopLevel(data []byte) (TopLevel, error) {
+	var r TopLevel
+	err := json.Unmarshal(data, &r)
+	return r, err
+}
+
+func (r *TopLevel) Marshal() ([]byte, error) {
+	return json.Marshal(r)
+}
+
+type TopLevel struct {
+	Kind Kind `json:"kind"`
+}
+
+type Kind string
+
+const (
+	Only Kind = "only"
+)
+
+type invalidKind string
+func (x invalidKind) Error() string { return "invalid Kind: " + string(x) }
+
+func (x *Kind) UnmarshalJSON(data []byte) error {
+	var value string
+	if err := json.Unmarshal(data, &value); err != nil { return err }
+	switch Kind(value) {
+	case Only: *x = Kind(value); return nil
+	}
+	return invalidKind(value)
+}
diff --git a/head/schema-haskell/test/inputs/schema/single-value-enum.schema/default/QuickType.hs b/head/schema-haskell/test/inputs/schema/single-value-enum.schema/default/QuickType.hs
new file mode 100644
index 0000000..a44f86f
--- /dev/null
+++ b/head/schema-haskell/test/inputs/schema/single-value-enum.schema/default/QuickType.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module QuickType
+    ( QuickType (..)
+    , Kind (..)
+    , decodeTopLevel
+    ) where
+
+import Data.Aeson
+import Data.Aeson.Types (emptyObject)
+import Data.ByteString.Lazy (ByteString)
+import Data.HashMap.Strict (HashMap)
+import Data.Text (Text)
+
+data QuickType = QuickType
+    { kindQuickType :: Kind
+    } deriving (Show)
+
+data Kind
+    = OnlyKind
+    deriving (Show)
+
+decodeTopLevel :: ByteString -> Maybe QuickType
+decodeTopLevel = decode
+
+instance ToJSON QuickType where
+    toJSON (QuickType kindQuickType) =
+        object
+        [ "kind" .= kindQuickType
+        ]
+
+instance FromJSON QuickType where
+    parseJSON (Object v) = QuickType
+        <$> v .: "kind"
+
+instance ToJSON Kind where
+    toJSON OnlyKind = "only"
+
+instance FromJSON Kind where
+    parseJSON = withText "Kind" parseText
+        where
+            parseText "only" = return OnlyKind
diff --git a/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java b/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java
new file mode 100644
index 0000000..cf0c886
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java
@@ -0,0 +1,102 @@
+// To use this code, add the following Maven dependency to your project:
+//
+//
+//     com.fasterxml.jackson.core     : jackson-databind          : 2.9.0
+//     com.fasterxml.jackson.datatype : jackson-datatype-jsr310   : 2.9.0
+//
+// Import this package:
+//
+//     import io.quicktype.Converter;
+//
+// Then you can deserialize a JSON string with
+//
+//     TopLevel data = Converter.fromJsonString(jsonString);
+
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.*;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.temporal.ChronoField;
+
+public class Converter {
+    // Date-time helpers
+
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_INSTANT)
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetDateTime parseDateTimeString(String str) {
+        return ZonedDateTime.from(Converter.DATE_TIME_FORMATTER.parse(str)).toOffsetDateTime();
+    }
+
+    private static final DateTimeFormatter TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_TIME)
+            .parseDefaulting(ChronoField.YEAR, 2020)
+            .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
+            .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetTime parseTimeString(String str) {
+        return ZonedDateTime.from(Converter.TIME_FORMATTER.parse(str)).toOffsetDateTime().toOffsetTime();
+    }
+    // Serialize/deserialize helpers
+
+    public static TopLevel fromJsonString(String json) throws IOException {
+        return getObjectReader().readValue(json);
+    }
+
+    public static String toJsonString(TopLevel obj) throws JsonProcessingException {
+        return getObjectWriter().writeValueAsString(obj);
+    }
+
+    private static ObjectReader reader;
+    private static ObjectWriter writer;
+
+    private static void instantiateMapper() {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.findAndRegisterModules();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(OffsetDateTime.class, new JsonDeserializer<OffsetDateTime>() {
+            @Override
+            public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseDateTimeString(value);
+            }
+        });
+        mapper.registerModule(module);
+        reader = mapper.readerFor(TopLevel.class);
+        writer = mapper.writerFor(TopLevel.class);
+    }
+
+    private static ObjectReader getObjectReader() {
+        if (reader == null) instantiateMapper();
+        return reader;
+    }
+
+    private static ObjectWriter getObjectWriter() {
+        if (writer == null) instantiateMapper();
+        return writer;
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java b/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java
new file mode 100644
index 0000000..2a26f91
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java
@@ -0,0 +1,22 @@
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.annotation.*;
+
+public enum Kind {
+    ONLY;
+
+    @JsonValue
+    public String toValue() {
+        switch (this) {
+            case ONLY: return "only";
+        }
+        return null;
+    }
+
+    @JsonCreator
+    public static Kind forValue(String value) throws IOException {
+        if (value.equals("only")) return ONLY;
+        throw new IOException("Cannot deserialize Kind");
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java
new file mode 100644
index 0000000..f42e091
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TopLevel {
+    private Kind kind;
+
+    @JsonProperty("kind")
+    public Kind getKind() { return kind; }
+    @JsonProperty("kind")
+    public void setKind(Kind value) { this.kind = value; }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java b/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java
new file mode 100644
index 0000000..322888e
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java
@@ -0,0 +1,123 @@
+// To use this code, add the following Maven dependency to your project:
+//
+//
+//     com.fasterxml.jackson.core     : jackson-databind          : 2.9.0
+//
+//
+// Import this package:
+//
+//     import io.quicktype.Converter;
+//
+// Then you can deserialize a JSON string with
+//
+//     TopLevel data = Converter.fromJsonString(jsonString);
+
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.*;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+
+public class Converter {
+    // Date-time helpers
+
+    private static final String[] DATE_TIME_FORMATS = {
+            "yyyy-MM-dd'T'HH:mm:ss.SX",
+            "yyyy-MM-dd'T'HH:mm:ss.S",
+            "yyyy-MM-dd'T'HH:mm:ssX",
+            "yyyy-MM-dd'T'HH:mm:ss",
+            "yyyy-MM-dd HH:mm:ss.SX",
+            "yyyy-MM-dd HH:mm:ss.S",
+            "yyyy-MM-dd HH:mm:ssX",
+            "yyyy-MM-dd HH:mm:ss",
+            "HH:mm:ss.SZ",
+            "HH:mm:ss.S",
+            "HH:mm:ssZ",
+            "HH:mm:ss",
+            "yyyy-MM-dd",
+    };
+
+    public static Date parseAllDateTimeString(String str) {
+        str = str.replaceFirst("(\\.\\d{3})\\d+", "$1");
+        for (String format : DATE_TIME_FORMATS) {
+            try {
+                return new SimpleDateFormat(format).parse(str);
+            } catch (Exception ex) {
+                // Ignored
+            }
+        }
+        return null;
+    }
+
+    public static String serializeDateTime(Date datetime) {
+        return new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ").format(datetime);
+    }
+
+    public static String serializeDate(Date datetime) {
+        return new SimpleDateFormat("yyyy-MM-dd").format(datetime);
+    }
+
+    public static String serializeTime(Date datetime) {
+        return new SimpleDateFormat("hh:mm:ssZ").format(datetime);
+    }
+    // Serialize/deserialize helpers
+
+    public static TopLevel fromJsonString(String json) throws IOException {
+        return getObjectReader().readValue(json);
+    }
+
+    public static String toJsonString(TopLevel obj) throws JsonProcessingException {
+        return getObjectWriter().writeValueAsString(obj);
+    }
+
+    private static ObjectReader reader;
+    private static ObjectWriter writer;
+
+    private static void instantiateMapper() {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.findAndRegisterModules();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(Date.class, new JsonDeserializer<Date>() {
+            @Override
+            public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseAllDateTimeString(value);
+            }
+        });
+        module.addDeserializer(Date.class, new JsonDeserializer<Date>() {
+            @Override
+            public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseAllDateTimeString(value);
+            }
+        });
+        module.addDeserializer(Date.class, new JsonDeserializer<Date>() {
+            @Override
+            public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseAllDateTimeString(value);
+            }
+        });
+        mapper.registerModule(module);
+        reader = mapper.readerFor(TopLevel.class);
+        writer = mapper.writerFor(TopLevel.class);
+    }
+
+    private static ObjectReader getObjectReader() {
+        if (reader == null) instantiateMapper();
+        return reader;
+    }
+
+    private static ObjectWriter getObjectWriter() {
+        if (writer == null) instantiateMapper();
+        return writer;
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java b/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java
new file mode 100644
index 0000000..2a26f91
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java
@@ -0,0 +1,22 @@
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.annotation.*;
+
+public enum Kind {
+    ONLY;
+
+    @JsonValue
+    public String toValue() {
+        switch (this) {
+            case ONLY: return "only";
+        }
+        return null;
+    }
+
+    @JsonCreator
+    public static Kind forValue(String value) throws IOException {
+        if (value.equals("only")) return ONLY;
+        throw new IOException("Cannot deserialize Kind");
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java
new file mode 100644
index 0000000..f42e091
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TopLevel {
+    private Kind kind;
+
+    @JsonProperty("kind")
+    public Kind getKind() { return kind; }
+    @JsonProperty("kind")
+    public void setKind(Kind value) { this.kind = value; }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java b/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java
new file mode 100644
index 0000000..cf0c886
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Converter.java
@@ -0,0 +1,102 @@
+// To use this code, add the following Maven dependency to your project:
+//
+//
+//     com.fasterxml.jackson.core     : jackson-databind          : 2.9.0
+//     com.fasterxml.jackson.datatype : jackson-datatype-jsr310   : 2.9.0
+//
+// Import this package:
+//
+//     import io.quicktype.Converter;
+//
+// Then you can deserialize a JSON string with
+//
+//     TopLevel data = Converter.fromJsonString(jsonString);
+
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.*;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.temporal.ChronoField;
+
+public class Converter {
+    // Date-time helpers
+
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+            .appendOptional(DateTimeFormatter.ISO_INSTANT)
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX"))
+            .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetDateTime parseDateTimeString(String str) {
+        return ZonedDateTime.from(Converter.DATE_TIME_FORMATTER.parse(str)).toOffsetDateTime();
+    }
+
+    private static final DateTimeFormatter TIME_FORMATTER = new DateTimeFormatterBuilder()
+            .appendOptional(DateTimeFormatter.ISO_TIME)
+            .appendOptional(DateTimeFormatter.ISO_OFFSET_TIME)
+            .parseDefaulting(ChronoField.YEAR, 2020)
+            .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
+            .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
+            .toFormatter()
+            .withZone(ZoneOffset.UTC);
+
+    public static OffsetTime parseTimeString(String str) {
+        return ZonedDateTime.from(Converter.TIME_FORMATTER.parse(str)).toOffsetDateTime().toOffsetTime();
+    }
+    // Serialize/deserialize helpers
+
+    public static TopLevel fromJsonString(String json) throws IOException {
+        return getObjectReader().readValue(json);
+    }
+
+    public static String toJsonString(TopLevel obj) throws JsonProcessingException {
+        return getObjectWriter().writeValueAsString(obj);
+    }
+
+    private static ObjectReader reader;
+    private static ObjectWriter writer;
+
+    private static void instantiateMapper() {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.findAndRegisterModules();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(OffsetDateTime.class, new JsonDeserializer<OffsetDateTime>() {
+            @Override
+            public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+                String value = jsonParser.getText();
+                return Converter.parseDateTimeString(value);
+            }
+        });
+        mapper.registerModule(module);
+        reader = mapper.readerFor(TopLevel.class);
+        writer = mapper.writerFor(TopLevel.class);
+    }
+
+    private static ObjectReader getObjectReader() {
+        if (reader == null) instantiateMapper();
+        return reader;
+    }
+
+    private static ObjectWriter getObjectWriter() {
+        if (writer == null) instantiateMapper();
+        return writer;
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java b/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java
new file mode 100644
index 0000000..2a26f91
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/Kind.java
@@ -0,0 +1,22 @@
+package io.quicktype;
+
+import java.io.IOException;
+import com.fasterxml.jackson.annotation.*;
+
+public enum Kind {
+    ONLY;
+
+    @JsonValue
+    public String toValue() {
+        switch (this) {
+            case ONLY: return "only";
+        }
+        return null;
+    }
+
+    @JsonCreator
+    public static Kind forValue(String value) throws IOException {
+        if (value.equals("only")) return ONLY;
+        throw new IOException("Cannot deserialize Kind");
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java
new file mode 100644
index 0000000..f42e091
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/single-value-enum.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TopLevel {
+    private Kind kind;
+
+    @JsonProperty("kind")
+    public Kind getKind() { return kind; }
+    @JsonProperty("kind")
+    public void setKind(Kind value) { this.kind = value; }
+}
diff --git a/head/schema-javascript/test/inputs/schema/single-value-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/single-value-enum.schema/default/TopLevel.js
new file mode 100644
index 0000000..3df2649
--- /dev/null
+++ b/head/schema-javascript/test/inputs/schema/single-value-enum.schema/default/TopLevel.js
@@ -0,0 +1,206 @@
+// To parse this data:
+//
+//   const Convert = require("./TopLevel");
+//
+//   const topLevel = Convert.toTopLevel(json);
+//
+// These functions will throw an error if the JSON doesn't
+// match the expected interface, even if the JSON is valid.
+
+// Converts JSON strings to/from your types
+// and asserts the results of JSON.parse at runtime
+function toTopLevel(json) {
+    return cast(JSON.parse(json), r("TopLevel"));
+}
+
+function topLevelToJson(value) {
+    return JSON.stringify(uncast(value, r("TopLevel")), null, 2);
+}
+
+function invalidValue(typ, val, key, parent = '') {
+    const prettyTyp = prettyTypeName(typ);
+    const parentText = parent ? ` on ${parent}` : '';
+    const keyText = key ? ` for key "${key}"` : '';
+    throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
+}
+
+function prettyTypeName(typ) {
+    if (Array.isArray(typ)) {
+        if (typ.length === 2 && typ[0] === undefined) {
+            return `an optional ${prettyTypeName(typ[1])}`;
+        } else {
+            return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`;
+        }
+    } else if (typeof typ === "object" && typ.literal !== undefined) {
+        return typ.literal;
+    } else {
+        return typeof typ;
+    }
+}
+
+function jsonToJSProps(typ) {
+    if (typ.jsonToJS === undefined) {
+        const map = {};
+        typ.props.forEach((p) => map[p.json] = { key: p.js, typ: p.typ });
+        typ.jsonToJS = map;
+    }
+    return typ.jsonToJS;
+}
+
+function jsToJSONProps(typ) {
+    if (typ.jsToJSON === undefined) {
+        const map = {};
+        typ.props.forEach((p) => map[p.js] = { key: p.json, typ: p.typ });
+        typ.jsToJSON = map;
+    }
+    return typ.jsToJSON;
+}
+
+function transform(val, typ, getProps, key = '', parent = '') {
+    function transformPrimitive(typ, val) {
+        if (typeof typ === typeof val) return val;
+        return invalidValue(typ, val, key, parent);
+    }
+
+    function transformUnion(typs, val) {
+        // val must validate against one typ in typs
+        const l = typs.length;
+        for (let i = 0; i < l; i++) {
+            const typ = typs[i];
+            try {
+                return transform(val, typ, getProps);
+            } catch (_) {}
+        }
+        return invalidValue(typs, val, key, parent);
+    }
+
+    function transformEnum(cases, val) {
+        if (cases.indexOf(val) !== -1) return val;
+        return invalidValue(cases.map(a => { return l(a); }), val, key, parent);
+    }
+
+    function transformArray(typ, val) {
+        // val must be an array with no invalid elements
+        if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
+
+        return val.map(el => transform(el, typ, getProps));
+    }
+
+    function transformDate(val) {
+        if (val === null) {
+            return null;
+        }
+        const d = new Date(val);
+        if (isNaN(d.valueOf())) {
+            return invalidValue(l("Date"), val, key, parent);
+        }
+        return d;
+    }
+
+    function transformObject(props, additional, val) {
+        if (val === null || typeof val !== "object" || Array.isArray(val)) {
+            return invalidValue(l(ref || "object"), val, key, parent);
+        }
+        const result = {};
+        Object.getOwnPropertyNames(props).forEach(key => {
+            const prop = props[key];
+            const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
+            result[prop.key] = transform(v, prop.typ, getProps, key, ref);
+        });
+        Object.getOwnPropertyNames(val).forEach(key => {
+            if (!Object.prototype.hasOwnProperty.call(props, key)) {
+                result[key] = transform(val[key], additional, getProps, key, ref);
+            }
+        });
+        return result;
+    }
+
+    if (typ === "any") return val;
+    if (typ === null) {
+        if (val === null) return val;
+        return invalidValue(typ, val, key, parent);
+    }
+    if (typ === false) return invalidValue(typ, val, key, parent);
+    let ref = undefined;
+    while (typeof typ === "object" && typ.ref !== undefined) {
+        ref = typ.ref;
+        typ = typeMap[typ.ref];
+    }
+    if (Array.isArray(typ)) return transformEnum(typ, val);
+    if (typeof typ === "object") {
+        return typ.hasOwnProperty("pattern")      ? typeof val === "string" && new RegExp(typ.pattern).test(val) ? val : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("string")       ? typeof val === "string" && (typ.min === undefined || val.length >= typ.min) && (typ.max === undefined || val.length <= typ.max) ? transform(val, typ.string, getProps, key, parent) : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("number")       ? typeof val === "number" && (typ.min === undefined || val >= typ.min) && (typ.max === undefined || val <= typ.max) ? transform(val, typ.number, getProps, key, parent) : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("integer")      ? typeof val === "number" && val % 1 === 0 ? val : invalidValue(l("integer"), val, key, parent)
+            : typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val)
+            : typ.hasOwnProperty("arrayItems")    ? transformArray(typ.arrayItems, val)
+            : typ.hasOwnProperty("props")         ? transformObject(getProps(typ), typ.additional, val)
+            : invalidValue(typ, val, key, parent);
+    }
+    // Numbers can be parsed by Date but shouldn't be.
+    if (typ === Date && typeof val !== "number") return transformDate(val);
+    return transformPrimitive(typ, val);
+}
+
+function cast(val, typ) {
+    return transform(val, typ, jsonToJSProps);
+}
+
+function uncast(val, typ) {
+    return transform(val, typ, jsToJSONProps);
+}
+
+function l(typ) {
+    return { literal: typ };
+}
+
+function a(typ) {
+    return { arrayItems: typ };
+}
+
+function i(typ) {
+    return { integer: typ };
+}
+
+function p(pattern) {
+    return { pattern };
+}
+
+function s(typ, min, max) {
+    return { string: typ, min, max };
+}
+
+function n(typ, min, max) {
+    return { number: typ, min, max };
+}
+
+function u(...typs) {
+    return { unionMembers: typs };
+}
+
+function o(props, additional) {
+    return { props, additional };
+}
+
+function m(additional) {
+    const props = [];
+    return { props, additional };
+}
+
+function r(name) {
+    return { ref: name };
+}
+
+const typeMap = {
+    "TopLevel": o([
+        { json: "kind", js: "kind", typ: r("Kind") },
+    ], "any"),
+    "Kind": [
+        "only",
+    ],
+};
+
+module.exports = {
+    "topLevelToJson": topLevelToJson,
+    "toTopLevel": toTopLevel,
+};
diff --git a/head/schema-javascript-prop-types/test/inputs/schema/single-value-enum.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/single-value-enum.schema/default/toplevel.js
new file mode 100644
index 0000000..9f2e0f5
--- /dev/null
+++ b/head/schema-javascript-prop-types/test/inputs/schema/single-value-enum.schema/default/toplevel.js
@@ -0,0 +1,21 @@
+// Example usage:
+//
+// import { MyShape } from ./myShape.js;
+//
+// class MyComponent extends React.Component {
+//   //
+// }
+//
+// MyComponent.propTypes = {
+//   input: MyShape
+// };
+
+import PropTypes from "prop-types";
+
+let _TopLevel;
+const _Kind = PropTypes.oneOf(['only']);
+_TopLevel = PropTypes.shape({
+    "kind": _Kind,
+});
+
+export const TopLevel = _TopLevel;
diff --git a/head/schema-kotlin/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt b/head/schema-kotlin/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt
new file mode 100644
index 0000000..c9fb160
--- /dev/null
+++ b/head/schema-kotlin/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt
@@ -0,0 +1,39 @@
+// To parse the JSON, install Klaxon and do:
+//
+//   val topLevel = TopLevel.fromJson(jsonString)
+
+package quicktype
+
+import com.beust.klaxon.*
+
+private fun <T> Klaxon.convert(k: kotlin.reflect.KClass<*>, fromJson: (JsonValue) -> T, toJson: (T) -> String, isUnion: Boolean = false) =
+    this.converter(object: Converter {
+        @Suppress("UNCHECKED_CAST")
+        override fun toJson(value: Any)        = toJson(value as T)
+        override fun fromJson(jv: JsonValue)   = fromJson(jv) as Any
+        override fun canConvert(cls: Class<*>) = cls == k.java || (isUnion && cls.superclass == k.java)
+    })
+
+private val klaxon = Klaxon()
+    .convert(Kind::class, { Kind.fromValue(it.string!!) }, { "\"${it.value}\"" })
+
+data class TopLevel (
+    val kind: Kind
+) {
+    public fun toJson() = klaxon.toJsonString(this)
+
+    companion object {
+        public fun fromJson(json: String) = klaxon.parse<TopLevel>(json)
+    }
+}
+
+enum class Kind(val value: String) {
+    Only("only");
+
+    companion object {
+        public fun fromValue(value: String): Kind = when (value) {
+            "only" -> Only
+            else   -> throw IllegalArgumentException()
+        }
+    }
+}
diff --git a/head/schema-kotlin-jackson/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt
new file mode 100644
index 0000000..a02d580
--- /dev/null
+++ b/head/schema-kotlin-jackson/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt
@@ -0,0 +1,53 @@
+// To parse the JSON, install jackson-module-kotlin and do:
+//
+//   val topLevel = TopLevel.fromJson(jsonString)
+
+package quicktype
+
+import com.fasterxml.jackson.annotation.*
+import com.fasterxml.jackson.core.*
+import com.fasterxml.jackson.databind.*
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer
+import com.fasterxml.jackson.databind.module.SimpleModule
+import com.fasterxml.jackson.databind.node.*
+import com.fasterxml.jackson.databind.ser.std.StdSerializer
+import com.fasterxml.jackson.module.kotlin.*
+
+
+@Suppress("UNCHECKED_CAST")
+private fun <T> ObjectMapper.convert(k: kotlin.reflect.KClass<*>, fromJson: (JsonNode) -> T, toJson: (T) -> String, isUnion: Boolean = false) = registerModule(SimpleModule().apply {
+    addSerializer(k.java as Class<T>, object : StdSerializer<T>(k.java as Class<T>) {
+            override fun serialize(value: T, gen: JsonGenerator, provider: SerializerProvider) = gen.writeRawValue(toJson(value))
+    })
+    addDeserializer(k.java as Class<T>, object : StdDeserializer<T>(k.java as Class<T>) {
+            override fun deserialize(p: JsonParser, ctxt: DeserializationContext) = fromJson(p.readValueAsTree())
+    })
+})
+
+val mapper = jacksonObjectMapper().apply {
+    propertyNamingStrategy = PropertyNamingStrategy.LOWER_CAMEL_CASE
+    setSerializationInclusion(JsonInclude.Include.NON_NULL)
+    convert(Kind::class, { Kind.fromValue(it.asText()) }, { "\"${it.value}\"" })
+}
+
+data class TopLevel (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val kind: Kind
+) {
+    fun toJson() = mapper.writeValueAsString(this)
+
+    companion object {
+        fun fromJson(json: String) = mapper.readValue<TopLevel>(json)
+    }
+}
+
+enum class Kind(val value: String) {
+    Only("only");
+
+    companion object {
+        fun fromValue(value: String): Kind = when (value) {
+            "only" -> Only
+            else   -> throw IllegalArgumentException()
+        }
+    }
+}
diff --git a/head/schema-kotlinx/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt b/head/schema-kotlinx/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt
new file mode 100644
index 0000000..08115e6
--- /dev/null
+++ b/head/schema-kotlinx/test/inputs/schema/single-value-enum.schema/default/TopLevel.kt
@@ -0,0 +1,21 @@
+// To parse the JSON, install kotlin's serialization plugin and do:
+//
+// val json     = Json { allowStructuredMapKeys = true }
+// val topLevel = json.parse(TopLevel.serializer(), jsonString)
+
+package quicktype
+
+import kotlinx.serialization.*
+import kotlinx.serialization.json.*
+import kotlinx.serialization.descriptors.*
+import kotlinx.serialization.encoding.*
+
+@Serializable
+data class TopLevel (
+    val kind: Kind
+)
+
+@Serializable
+enum class Kind(val value: String) {
+    @SerialName("only") Only("only");
+}
diff --git a/head/schema-objective-c/test/inputs/schema/single-value-enum.schema/default/QTTopLevel.h b/head/schema-objective-c/test/inputs/schema/single-value-enum.schema/default/QTTopLevel.h
new file mode 100644
index 0000000..56aa1a5
--- /dev/null
+++ b/head/schema-objective-c/test/inputs/schema/single-value-enum.schema/default/QTTopLevel.h
@@ -0,0 +1,39 @@
+// To parse this JSON:
+//
+//   NSError *error;
+//   QTTopLevel *topLevel = [QTTopLevel fromJSON:json encoding:NSUTF8Encoding error:&error];
+
+#import <Foundation/Foundation.h>
+
+@class QTTopLevel;
+@class QTKind;
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma mark - Boxed enums
+
+@interface QTKind : NSObject
+@property (nonatomic, readonly, copy) NSString *value;
++ (instancetype _Nullable)withValue:(NSString *)value;
++ (QTKind *)only;
+@end
+
+#pragma mark - Top-level marshaling functions
+
+QTTopLevel *_Nullable QTTopLevelFromData(NSData *data, NSError **error);
+QTTopLevel *_Nullable QTTopLevelFromJSON(NSString *json, NSStringEncoding encoding, NSError **error);
+NSData     *_Nullable QTTopLevelToData(QTTopLevel *topLevel, NSError **error);
+NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding encoding, NSError **error);
+
+#pragma mark - Object interfaces
+
+@interface QTTopLevel : NSObject
+@property (nonatomic, assign) QTKind *kind;
+
++ (_Nullable instancetype)fromJSON:(NSString *)json encoding:(NSStringEncoding)encoding error:(NSError *_Nullable *)error;
++ (_Nullable instancetype)fromData:(NSData *)data error:(NSError *_Nullable *)error;
+- (NSString *_Nullable)toJSON:(NSStringEncoding)encoding error:(NSError *_Nullable *)error;
+- (NSData *_Nullable)toData:(NSError *_Nullable *)error;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/head/schema-objective-c/test/inputs/schema/single-value-enum.schema/default/QTTopLevel.m b/head/schema-objective-c/test/inputs/schema/single-value-enum.schema/default/QTTopLevel.m
new file mode 100644
index 0000000..3a0778d
--- /dev/null
+++ b/head/schema-objective-c/test/inputs/schema/single-value-enum.schema/default/QTTopLevel.m
@@ -0,0 +1,145 @@
+#import "QTTopLevel.h"
+
+#define λ(decl, expr) (^(decl) { return (expr); })
+
+static id NSNullify(id _Nullable x) {
+    return (x == nil || x == NSNull.null) ? NSNull.null : x;
+}
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface QTTopLevel (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@implementation QTKind
++ (NSDictionary<NSString *, QTKind *> *)values
+{
+    static NSDictionary<NSString *, QTKind *> *values;
+    return values = values ? values : @{
+        @"only": [[QTKind alloc] initWithValue:@"only"],
+    };
+}
+
++ (QTKind *)only { return QTKind.values[@"only"]; }
+
++ (instancetype _Nullable)withValue:(NSString *)value
+{
+    return QTKind.values[value];
+}
+
+- (instancetype)initWithValue:(NSString *)value
+{
+    if (self = [super init]) _value = value;
+    return self;
+}
+
+- (NSUInteger)hash { return _value.hash; }
+@end
+
+#pragma mark - JSON serialization
+
+QTTopLevel *_Nullable QTTopLevelFromData(NSData *data, NSError **error)
+{
+    @try {
+        id json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:error];
+        return *error ? nil : [QTTopLevel fromJSONDictionary:json];
+    } @catch (NSException *exception) {
+        *error = [NSError errorWithDomain:@"JSONSerialization" code:-1 userInfo:@{ @"exception": exception }];
+        return nil;
+    }
+}
+
+QTTopLevel *_Nullable QTTopLevelFromJSON(NSString *json, NSStringEncoding encoding, NSError **error)
+{
+    return QTTopLevelFromData([json dataUsingEncoding:encoding], error);
+}
+
+NSData *_Nullable QTTopLevelToData(QTTopLevel *topLevel, NSError **error)
+{
+    @try {
+        id json = [topLevel JSONDictionary];
+        NSData *data = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingFragmentsAllowed error:error];
+        return *error ? nil : data;
+    } @catch (NSException *exception) {
+        *error = [NSError errorWithDomain:@"JSONSerialization" code:-1 userInfo:@{ @"exception": exception }];
+        return nil;
+    }
+}
+
+NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding encoding, NSError **error)
+{
+    NSData *data = QTTopLevelToData(topLevel, error);
+    return data ? [[NSString alloc] initWithData:data encoding:encoding] : nil;
+}
+
+@implementation QTTopLevel
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"kind": @"kind",
+    };
+}
+
++ (_Nullable instancetype)fromData:(NSData *)data error:(NSError *_Nullable *)error
+{
+    return QTTopLevelFromData(data, error);
+}
+
++ (_Nullable instancetype)fromJSON:(NSString *)json encoding:(NSStringEncoding)encoding error:(NSError *_Nullable *)error
+{
+    return QTTopLevelFromJSON(json, encoding, error);
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTopLevel alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"kind"] isKindOfClass:NSString.class]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+        _kind = [QTKind withValue:(id)_kind];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTTopLevel.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTTopLevel.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTTopLevel.properties.allValues] mutableCopy];
+
+    [dict addEntriesFromDictionary:@{
+        @"kind": [_kind value],
+    }];
+
+    return dict;
+}
+
+- (NSData *_Nullable)toData:(NSError *_Nullable *)error
+{
+    return QTTopLevelToData(self, error);
+}
+
+- (NSString *_Nullable)toJSON:(NSStringEncoding)encoding error:(NSError *_Nullable *)error
+{
+    return QTTopLevelToJSON(self, encoding, error);
+}
+@end
+
+NS_ASSUME_NONNULL_END
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 a415684..400ef37 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
@@ -183,7 +183,7 @@ class TopLevel {
     private OrClass|float|null $or; // json:or Optional
     private OrEq|float|null $orEq; // json:or_eq Optional
     private Out|float|null $out; // json:out Optional
-    private Override|float|null $override; // json:override Optional
+    private OverrideClass|float|null $override; // json:override Optional
     private Package|float|null $package; // json:package Optional
     private Params|float|null $params; // json:params Optional
     private Pass|float|null $pass; // json:pass Optional
@@ -462,7 +462,7 @@ class TopLevel {
      * @param OrClass|float|null $or
      * @param OrEq|float|null $orEq
      * @param Out|float|null $out
-     * @param Override|float|null $override
+     * @param OverrideClass|float|null $override
      * @param Package|float|null $package
      * @param Params|float|null $params
      * @param Pass|float|null $pass
@@ -561,7 +561,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, 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, CoAwait|float|null $coAwait, CoReturn|float|null $coReturn, CoYield|float|null $coYield, 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, Date|float|null $date, DateParseHandling|float|null $dateParseHandling, Debugger|float|null $debugger, Decimal|float|null $decimal, DeclareClass|float|null $declare, Decltype|float|null $decltype, DecodeString|float|null $decodeString, 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, EnumClass|float|null $enum, 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, Friend|float|null $friend, From|float|null $from, FromJSON|float|null $fromJSON, Func|float|null $func, FunctionClass|float|null $function, Get|float|null $get, GlobalClass|float|null $global, Go|float|null $go, GotoClass|float|null $goto, Guard|float|null $guard, 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, 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, Lambda|float|null $lambda, Lazy|float|null $lazy, Left|float|null $left, Let|float|null $let, ListClass|float|null $list, Lock|float|null $lock, Long|float|null $long, Map|float|null $map, 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, Not|float|null $not, NotEq|float|null $notEq, NSString|float|null $nsString, NULLClass|float|null $null, UnionNullNull|float|null $topLevelNull, Nullptr|float|null $nullptr, Number|float|null $number, ObjectClass|float|null $object, 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, Override|float|null $override, Package|float|null $package, Params|float|null $params, Pass|float|null $pass, Port|float|null $port, Postfix|float|null $postfix, Precedence|float|null $precedence, Prefix|float|null $prefix, PrintClass|float|null $print, Printf|float|null $printf, 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, 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, Sbyte|float|null $sbyte, Sealed|float|null $sealed, Sel|float|null $sel, Select|float|null $select, SelfClass|float|null $self, UnionSelfSelf|float|null $topLevelSelf, Serialize|float|null $serialize, Set|float|null $set, Short|float|null $short, Signed|float|null $signed, Sizeof|float|null $sizeof, Stackalloc|float|null $stackalloc, StaticClass|float|null $static, StaticAssert|float|null $staticAssert, StaticCast|float|null $staticCast, 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, ToJSON|float|null $toJSON, TopLevelClass|float|null $topLevel, Transient|float|null $transient, TrueClass|float|null $true, UnionTrueTrue|float|null $topLevelTrue, TryClass|float|null $try, Type|float|null $type, TypeClass|float|null $topLevelType, Typealias|float|null $typealias, Typedef|float|null $typedef, Typeid|float|null $typeid, Typename|float|null $typename, Typeof|float|null $typeof, Uint|float|null $uint, Ulong|float|null $ulong, Unchecked|float|null $unchecked, Undefined|float|null $undefined, UnionClass|float|null $union, Unowned|float|null $unowned, Unsafe|float|null $unsafe, Unsigned|float|null $unsigned, Ushort|float|null $ushort, Using|float|null $using, 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, 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, CoAwait|float|null $coAwait, CoReturn|float|null $coReturn, CoYield|float|null $coYield, 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, Date|float|null $date, DateParseHandling|float|null $dateParseHandling, Debugger|float|null $debugger, Decimal|float|null $decimal, DeclareClass|float|null $declare, Decltype|float|null $decltype, DecodeString|float|null $decodeString, 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, EnumClass|float|null $enum, 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, Friend|float|null $friend, From|float|null $from, FromJSON|float|null $fromJSON, Func|float|null $func, FunctionClass|float|null $function, Get|float|null $get, GlobalClass|float|null $global, Go|float|null $go, GotoClass|float|null $goto, Guard|float|null $guard, 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, 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, Lambda|float|null $lambda, Lazy|float|null $lazy, Left|float|null $left, Let|float|null $let, ListClass|float|null $list, Lock|float|null $lock, Long|float|null $long, Map|float|null $map, 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, Not|float|null $not, NotEq|float|null $notEq, NSString|float|null $nsString, NULLClass|float|null $null, UnionNullNull|float|null $topLevelNull, Nullptr|float|null $nullptr, Number|float|null $number, ObjectClass|float|null $object, Of|float|null $of, Oneway|float|null $oneway, Open|float|null $open, Operator|float|null $operator, Optional|float|null $optional, OrClass|float|null $or, OrEq|float|null $orEq, Out|float|null $out, OverrideClass|float|null $override, Package|float|null $package, Params|float|null $params, Pass|float|null $pass, Port|float|null $port, Postfix|float|null $postfix, Precedence|float|null $precedence, Prefix|float|null $prefix, PrintClass|float|null $print, Printf|float|null $printf, 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, 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, Sbyte|float|null $sbyte, Sealed|float|null $sealed, Sel|float|null $sel, Select|float|null $select, SelfClass|float|null $self, UnionSelfSelf|float|null $topLevelSelf, Serialize|float|null $serialize, Set|float|null $set, Short|float|null $short, Signed|float|null $signed, Sizeof|float|null $sizeof, Stackalloc|float|null $stackalloc, StaticClass|float|null $static, StaticAssert|float|null $staticAssert, StaticCast|float|null $staticCast, 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, ToJSON|float|null $toJSON, TopLevelClass|float|null $topLevel, Transient|float|null $transient, TrueClass|float|null $true, UnionTrueTrue|float|null $topLevelTrue, TryClass|float|null $try, Type|float|null $type, TypeClass|float|null $topLevelType, Typealias|float|null $typealias, Typedef|float|null $typedef, Typeid|float|null $typeid, Typename|float|null $typename, Typeof|float|null $typeof, Uint|float|null $uint, Ulong|float|null $ulong, Unchecked|float|null $unchecked, Undefined|float|null $undefined, UnionClass|float|null $union, Unowned|float|null $unowned, Unsafe|float|null $unsafe, Unsigned|float|null $unsigned, Ushort|float|null $ushort, Using|float|null $using, 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;
@@ -14429,13 +14429,13 @@ class TopLevel {
     /**
      * @param stdClass|float|null $value
      * @throws Exception
-     * @return Override|float|null
+     * @return OverrideClass|float|null
      */
-    public static function fromOverride(stdClass|float|null $value): Override|float|null {
+    public static function fromOverride(stdClass|float|null $value): OverrideClass|float|null {
         if (is_null($value)) {
             return $value; /*null*/
         } elseif (is_object($value)) {
-            return Override::from($value); /*class*/
+            return OverrideClass::from($value); /*class*/
         } elseif (is_float($value) || is_int($value)) {
             return $value; /*float*/
         } else {
@@ -14451,7 +14451,7 @@ class TopLevel {
         if (TopLevel::validateOverride($this->override))  {
             if (is_null($this->override)) {
                 return $this->override; /*null*/
-            } elseif ($this->override instanceof Override) {
+            } elseif ($this->override instanceof OverrideClass) {
                 return $this->override->to(); /*class*/
             } elseif (is_float($this->override) || is_int($this->override)) {
                 return $this->override; /*float*/
@@ -14463,16 +14463,16 @@ class TopLevel {
     }
 
     /**
-     * @param Override|float|null
+     * @param OverrideClass|float|null
      * @return bool
      * @throws Exception
      */
-    public static function validateOverride(Override|float|null $value): bool {
+    public static function validateOverride(OverrideClass|float|null $value): bool {
         if (is_null($value)) {
             if (!is_null($value)) {
                 throw new Exception("Attribute Error:TopLevel::override");
             }
-        } elseif ($value instanceof Override) {
+        } elseif ($value instanceof OverrideClass) {
             $value->validate();
         } elseif (is_float($value) || is_int($value)) {
             if (!is_float($value) && !is_int($value)) {
@@ -14486,9 +14486,9 @@ class TopLevel {
 
     /**
      * @throws Exception
-     * @return Override|float|null
+     * @return OverrideClass|float|null
      */
-    public function getOverride(): Override|float|null {
+    public function getOverride(): OverrideClass|float|null {
         if (TopLevel::validateOverride($this->override))  {
             return $this->override;
         }
@@ -14496,10 +14496,10 @@ class TopLevel {
     }
 
     /**
-     * @return Override|float|null
+     * @return OverrideClass|float|null
      */
-    public static function sampleOverride(): Override|float|null {
-        return Override::sample(); /*210:override*/
+    public static function sampleOverride(): OverrideClass|float|null {
+        return OverrideClass::sample(); /*210:override*/
     }
 
     /**
@@ -30712,9 +30712,9 @@ class Out {
     }
 }
 
-// This is an autogenerated file:Override
+// This is an autogenerated file:OverrideClass
 
-class Override {
+class OverrideClass {
 
     /**
      */
@@ -30740,19 +30740,19 @@ class Override {
 
     /**
      * @param stdClass $obj
-     * @return Override
+     * @return OverrideClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Override {
-        return new Override(
+    public static function from(stdClass $obj): OverrideClass {
+        return new OverrideClass(
         );
     }
 
     /**
-     * @return Override
+     * @return OverrideClass
      */
-    public static function sample(): Override {
-        return new Override(
+    public static function sample(): OverrideClass {
+        return new OverrideClass(
         );
     }
 }
diff --git a/head/schema-php/test/inputs/schema/single-value-enum.schema/default/TopLevel.php b/head/schema-php/test/inputs/schema/single-value-enum.schema/default/TopLevel.php
new file mode 100644
index 0000000..d59f66d
--- /dev/null
+++ b/head/schema-php/test/inputs/schema/single-value-enum.schema/default/TopLevel.php
@@ -0,0 +1,146 @@
+<?php
+declare(strict_types=1);
+
+// This is an autogenerated file:TopLevel
+
+class TopLevel {
+    private Kind $kind; // json:kind Required
+
+    /**
+     * @param Kind $kind
+     */
+    public function __construct(Kind $kind) {
+        $this->kind = $kind;
+    }
+
+    /**
+     * @param string $value
+     * @throws Exception
+     * @return Kind
+     */
+    public static function fromKind(string $value): Kind {
+        return Kind::from($value); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return string
+     */
+    public function toKind(): string {
+        if (TopLevel::validateKind($this->kind))  {
+            return Kind::to($this->kind); /*enum*/
+        }
+        throw new Exception('never get to this TopLevel::kind');
+    }
+
+    /**
+     * @param Kind
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateKind(Kind $value): bool {
+        Kind::to($value);
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Kind
+     */
+    public function getKind(): Kind {
+        if (TopLevel::validateKind($this->kind))  {
+            return $this->kind;
+        }
+        throw new Exception('never get to getKind TopLevel::kind');
+    }
+
+    /**
+     * @return Kind
+     */
+    public static function sampleKind(): Kind {
+        return Kind::sample(); /*enum*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TopLevel::validateKind($this->kind);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'kind'} = $this->toKind();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TopLevel
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TopLevel {
+        return new TopLevel(
+         TopLevel::fromKind($obj->{'kind'})
+        );
+    }
+
+    /**
+     * @return TopLevel
+     */
+    public static function sample(): TopLevel {
+        return new TopLevel(
+         TopLevel::sampleKind()
+        );
+    }
+}
+
+// This is an autogenerated file:Kind
+
+class Kind {
+    public static Kind $ONLY;
+    public static function init() {
+        Kind::$ONLY = new Kind('only');
+    }
+    private string $enum;
+    public function __construct(string $enum) {
+        $this->enum = $enum;
+    }
+
+    /**
+     * @param Kind
+     * @return string
+     * @throws Exception
+     */
+    public static function to(Kind $obj): string {
+        switch ($obj->enum) {
+            case Kind::$ONLY->enum: return 'only';
+        }
+        throw new Exception('the give value is not an enum-value.');
+    }
+
+    /**
+     * @param mixed
+     * @return Kind
+     * @throws Exception
+     */
+    public static function from($obj): Kind {
+        switch ($obj) {
+            case 'only': return Kind::$ONLY;
+        }
+        throw new Exception("Cannot deserialize Kind");
+    }
+
+    /**
+     * @return Kind
+     */
+    public static function sample(): Kind {
+        return Kind::$ONLY;
+    }
+}
+Kind::init();
diff --git a/head/schema-pike/test/inputs/schema/single-value-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/single-value-enum.schema/default/TopLevel.pmod
new file mode 100644
index 0000000..01e5795
--- /dev/null
+++ b/head/schema-pike/test/inputs/schema/single-value-enum.schema/default/TopLevel.pmod
@@ -0,0 +1,41 @@
+// This source has been automatically generated by quicktype.
+// ( https://github.com/quicktype/quicktype )
+//
+// To use this code, simply import it into your project as a Pike module.
+// To JSON-encode your object, you can pass it to `Standards.JSON.encode`
+// or call `encode_json` on it.
+//
+// To decode a JSON string, first pass it to `Standards.JSON.decode`,
+// and then pass the result to `<YourClass>_from_JSON`.
+// It will return an instance of <YourClass>.
+// Bear in mind that these functions have unexpected behavior,
+// and will likely throw an error, if the JSON string does not
+// match the expected interface, even if the JSON itself is valid.
+
+class TopLevel {
+    Kind kind; // json: "kind"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "kind" : kind,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TopLevel TopLevel_from_JSON(mixed json) {
+    TopLevel retval = TopLevel();
+
+    retval.kind = Kind_from_JSON(json["kind"]);
+
+    return retval;
+}
+
+enum Kind {
+    ONLY = "only", // json: "only"
+}
+
+Kind Kind_from_JSON(mixed json) {
+    if(json&&json != "only")error("enum");return json;
+}
diff --git a/head/schema-python/test/inputs/schema/single-value-enum.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/single-value-enum.schema/default/quicktype.py
new file mode 100644
index 0000000..f622853
--- /dev/null
+++ b/head/schema-python/test/inputs/schema/single-value-enum.schema/default/quicktype.py
@@ -0,0 +1,45 @@
+from enum import Enum
+from dataclasses import dataclass
+from typing import Any, TypeVar, Type, cast
+
+
+T = TypeVar("T")
+EnumT = TypeVar("EnumT", bound=Enum)
+
+
+def to_enum(c: Type[EnumT], x: Any) -> EnumT:
+    assert isinstance(x, c)
+    return x.value
+
+
+def to_class(c: Type[T], x: Any) -> dict:
+    assert isinstance(x, c)
+    return cast(Any, x).to_dict()
+
+
+class Kind(Enum):
+    ONLY = "only"
+
+
+@dataclass
+class TopLevel:
+    kind: Kind
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'TopLevel':
+        assert isinstance(obj, dict)
+        kind = Kind(obj.get("kind"))
+        return TopLevel(kind)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["kind"] = to_enum(Kind, self.kind)
+        return result
+
+
+def top_level_from_dict(s: Any) -> TopLevel:
+    return TopLevel.from_dict(s)
+
+
+def top_level_to_dict(x: TopLevel) -> Any:
+    return to_class(TopLevel, x)
diff --git a/head/schema-ruby/test/inputs/schema/single-value-enum.schema/default/TopLevel.rb b/head/schema-ruby/test/inputs/schema/single-value-enum.schema/default/TopLevel.rb
new file mode 100644
index 0000000..0d37ab9
--- /dev/null
+++ b/head/schema-ruby/test/inputs/schema/single-value-enum.schema/default/TopLevel.rb
@@ -0,0 +1,50 @@
+# This code may look unusually verbose for Ruby (and it is), but
+# it performs some subtle and complex validation of JSON data.
+#
+# To parse this JSON, add 'dry-struct' and 'dry-types' gems, then do:
+#
+#   top_level = TopLevel.from_json! "{…}"
+#   puts top_level.kind == Kind::Only
+#
+# If from_json! succeeds, the value returned matches the schema.
+
+require 'json'
+require 'dry-types'
+require 'dry-struct'
+
+module Types
+  include Dry.Types(default: :nominal)
+
+  Hash   = Strict::Hash
+  String = Strict::String
+  Kind   = Strict::String.enum("only")
+end
+
+module Kind
+  Only = "only"
+end
+
+class TopLevel < Dry::Struct
+  attribute :kind, Types::Kind
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      kind: d.fetch("kind"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "kind" => kind,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
diff --git a/head/schema-rust/test/inputs/schema/single-value-enum.schema/default/module_under_test.rs b/head/schema-rust/test/inputs/schema/single-value-enum.schema/default/module_under_test.rs
new file mode 100644
index 0000000..64a6caa
--- /dev/null
+++ b/head/schema-rust/test/inputs/schema/single-value-enum.schema/default/module_under_test.rs
@@ -0,0 +1,25 @@
+// Example code that deserializes and serializes the model.
+// extern crate serde;
+// #[macro_use]
+// extern crate serde_derive;
+// extern crate serde_json;
+//
+// use generated_module::TopLevel;
+//
+// fn main() {
+//     let json = r#"{"answer": 42}"#;
+//     let model: TopLevel = serde_json::from_str(&json).unwrap();
+// }
+
+use serde::{Serialize, Deserialize};
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct TopLevel {
+    pub kind: Kind,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "snake_case")]
+pub enum Kind {
+    Only,
+}
diff --git a/head/schema-scala3/test/inputs/schema/single-value-enum.schema/default/TopLevel.scala b/head/schema-scala3/test/inputs/schema/single-value-enum.schema/default/TopLevel.scala
new file mode 100644
index 0000000..787c417
--- /dev/null
+++ b/head/schema-scala3/test/inputs/schema/single-value-enum.schema/default/TopLevel.scala
@@ -0,0 +1,23 @@
+package quicktype
+
+import io.circe.syntax._
+import io.circe._
+import cats.syntax.functor._
+
+// If a union has a null in, then we'll need this too... 
+type NullValue = None.type
+
+case class TopLevel (
+    val kind : Kind
+) derives Encoder.AsObject, Decoder
+
+enum Kind : 
+    case Only
+
+given Decoder[Kind] = Decoder.decodeString.emap {
+    case "only" => scala.Right(Kind.Only)
+    case other => scala.Left("invalid Kind: " + other)
+}
+given Encoder[Kind] = Encoder.encodeString.contramap {
+    case Kind.Only => "only"
+}
diff --git a/head/schema-scala3-upickle/test/inputs/schema/single-value-enum.schema/default/TopLevel.scala b/head/schema-scala3-upickle/test/inputs/schema/single-value-enum.schema/default/TopLevel.scala
new file mode 100644
index 0000000..5988571
--- /dev/null
+++ b/head/schema-scala3-upickle/test/inputs/schema/single-value-enum.schema/default/TopLevel.scala
@@ -0,0 +1,83 @@
+package quicktype
+
+// Custom pickler so that missing keys and JSON nulls both read as None,
+// and None is left out when writing (upickle's default for Option is a
+// JSON array).
+object OptionPickler extends upickle.AttributeTagged:
+    import upickle.default.Writer
+    import upickle.default.Reader
+    override implicit def OptionWriter[T: Writer]: Writer[Option[T]] =
+        implicitly[Writer[T]].comap[Option[T]] {
+            case None => null.asInstanceOf[T]
+            case Some(x) => x
+        }
+
+    override implicit def OptionReader[T: Reader]: Reader[Option[T]] = {
+        new Reader.Delegate[Any, Option[T]](implicitly[Reader[T]].map(Some(_))){
+        override def visitNull(index: Int) = None
+        }
+    }
+end OptionPickler
+
+// If a union has a null in, then we'll need this too...
+type NullValue = None.type
+given OptionPickler.ReadWriter[NullValue] = OptionPickler.readwriter[ujson.Value].bimap[NullValue](
+    _ => ujson.Null,
+    json => if json.isNull then None else throw new upickle.core.Abort("not null")
+)
+
+object JsonExt:
+    val valueReader = OptionPickler.readwriter[ujson.Value]
+
+    // upickle's built-in primitive readers are lenient -- the numeric and
+    // boolean readers accept strings, and the string reader accepts
+    // numbers and booleans -- so untagged unions need strict readers to
+    // pick the right member.
+    val strictString: OptionPickler.Reader[String] = valueReader.map {
+        case ujson.Str(s) => s
+        case json => throw new upickle.core.Abort("expected string, got " + json)
+    }
+    val strictLong: OptionPickler.Reader[Long] = valueReader.map {
+        case ujson.Num(n) if n.isWhole => n.toLong
+        case json => throw new upickle.core.Abort("expected integer, got " + json)
+    }
+    val strictDouble: OptionPickler.Reader[Double] = valueReader.map {
+        case ujson.Num(n) => n
+        case json => throw new upickle.core.Abort("expected number, got " + json)
+    }
+    val strictBoolean: OptionPickler.Reader[Boolean] = valueReader.map {
+        case ujson.Bool(b) => b
+        case json => throw new upickle.core.Abort("expected boolean, got " + json)
+    }
+
+    def badMerge[T](r1: => OptionPickler.Reader[?], rest: OptionPickler.Reader[?]*): OptionPickler.Reader[T] = valueReader.map { json =>
+        var t: T | Null = null
+        val stack       = Vector.newBuilder[Throwable]
+        (r1 +: rest).foreach { reader =>
+            if t == null then
+            try
+                t = OptionPickler.read[T](json, trace = true)(using reader.asInstanceOf[OptionPickler.Reader[T]])
+            catch
+                case exc => stack += exc
+        }
+        if t != null then t.nn else throw new Exception(json.toString(), stack.result().headOption.getOrElse(null))
+    }
+end JsonExt
+
+
+case class TopLevel (
+    val kind : Kind
+) derives OptionPickler.ReadWriter
+
+enum Kind : 
+    case Only
+
+given OptionPickler.ReadWriter[Kind] = OptionPickler.readwriter[String].bimap[Kind](
+    {
+        case Kind.Only => "only"
+    },
+    {
+        case "only" => Kind.Only
+        case other => throw new upickle.core.Abort("invalid Kind: " + other)
+    }
+)
diff --git a/head/schema-schema/test/inputs/schema/single-value-enum.schema/default/TopLevel.schema b/head/schema-schema/test/inputs/schema/single-value-enum.schema/default/TopLevel.schema
new file mode 100644
index 0000000..02c5f04
--- /dev/null
+++ b/head/schema-schema/test/inputs/schema/single-value-enum.schema/default/TopLevel.schema
@@ -0,0 +1,26 @@
+{
+    "$schema": "http://json-schema.org/draft-06/schema#",
+    "$ref": "#/definitions/TopLevel",
+    "definitions": {
+        "TopLevel": {
+            "type": "object",
+            "additionalProperties": {},
+            "properties": {
+                "kind": {
+                    "$ref": "#/definitions/Kind"
+                }
+            },
+            "required": [
+                "kind"
+            ],
+            "title": "TopLevel"
+        },
+        "Kind": {
+            "type": "string",
+            "enum": [
+                "only"
+            ],
+            "title": "Kind"
+        }
+    }
+}
diff --git a/head/schema-swift/test/inputs/schema/single-value-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/single-value-enum.schema/default/quicktype.swift
new file mode 100644
index 0000000..8a22673
--- /dev/null
+++ b/head/schema-swift/test/inputs/schema/single-value-enum.schema/default/quicktype.swift
@@ -0,0 +1,90 @@
+// This file was generated from JSON Schema using quicktype, do not modify it directly.
+// To parse the JSON, add this file to your project and do:
+//
+//   let topLevel = try TopLevel(json)
+
+import Foundation
+
+// MARK: - TopLevel
+struct TopLevel: Codable {
+    let kind: Kind
+
+    enum CodingKeys: String, CodingKey {
+        case kind = "kind"
+    }
+}
+
+// MARK: TopLevel convenience initializers and mutators
+
+extension TopLevel {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(TopLevel.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        kind: Kind? = nil
+    ) -> TopLevel {
+        return TopLevel(
+            kind: kind ?? self.kind
+        )
+    }
+
+    func 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 Kind: String, Codable {
+    case only = "only"
+}
+
+// MARK: - Helper functions for creating encoders and decoders
+
+func newJSONDecoder() -> JSONDecoder {
+    let decoder = JSONDecoder()
+    decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
+        let container = try decoder.singleValueContainer()
+        let dateStr = try container.decode(String.self)
+
+        let formatter = DateFormatter()
+        formatter.calendar = Calendar(identifier: .iso8601)
+        formatter.locale = Locale(identifier: "en_US_POSIX")
+        formatter.timeZone = TimeZone(secondsFromGMT: 0)
+        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
+        if let date = formatter.date(from: dateStr) {
+            return date
+        }
+        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXXXX"
+        if let date = formatter.date(from: dateStr) {
+            return date
+        }
+        throw DecodingError.typeMismatch(Date.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Could not decode date"))
+    })
+    return decoder
+}
+
+func newJSONEncoder() -> JSONEncoder {
+    let encoder = JSONEncoder()
+    let formatter = DateFormatter()
+    formatter.calendar = Calendar(identifier: .iso8601)
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXXXX"
+    encoder.dateEncodingStrategy = .formatted(formatter)
+    return encoder
+}
diff --git a/head/schema-typescript/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts
new file mode 100644
index 0000000..9fe631d
--- /dev/null
+++ b/head/schema-typescript/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts
@@ -0,0 +1,210 @@
+// To parse this data:
+//
+//   import { Convert, TopLevel } from "./TopLevel";
+//
+//   const topLevel = Convert.toTopLevel(json);
+//
+// These functions will throw an error if the JSON doesn't
+// match the expected interface, even if the JSON is valid.
+
+export interface TopLevel {
+    kind: Kind;
+    [property: string]: unknown;
+}
+
+export type Kind = "only";
+
+// Converts JSON strings to/from your types
+// and asserts the results of JSON.parse at runtime
+export class Convert {
+    public static toTopLevel(json: string): TopLevel {
+        return cast(JSON.parse(json), r("TopLevel"));
+    }
+
+    public static topLevelToJson(value: TopLevel): string {
+        return JSON.stringify(uncast(value, r("TopLevel")), null, 2);
+    }
+}
+
+function invalidValue(typ: any, val: any, key: any, parent: any = ''): never {
+    const prettyTyp = prettyTypeName(typ);
+    const parentText = parent ? ` on ${parent}` : '';
+    const keyText = key ? ` for key "${key}"` : '';
+    throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
+}
+
+function prettyTypeName(typ: any): string {
+    if (Array.isArray(typ)) {
+        if (typ.length === 2 && typ[0] === undefined) {
+            return `an optional ${prettyTypeName(typ[1])}`;
+        } else {
+            return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`;
+        }
+    } else if (typeof typ === "object" && typ.literal !== undefined) {
+        return typ.literal;
+    } else {
+        return typeof typ;
+    }
+}
+
+function jsonToJSProps(typ: any): any {
+    if (typ.jsonToJS === undefined) {
+        const map: any = {};
+        typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });
+        typ.jsonToJS = map;
+    }
+    return typ.jsonToJS;
+}
+
+function jsToJSONProps(typ: any): any {
+    if (typ.jsToJSON === undefined) {
+        const map: any = {};
+        typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });
+        typ.jsToJSON = map;
+    }
+    return typ.jsToJSON;
+}
+
+function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any {
+    function transformPrimitive(typ: string, val: any): any {
+        if (typeof typ === typeof val) return val;
+        return invalidValue(typ, val, key, parent);
+    }
+
+    function transformUnion(typs: any[], val: any): any {
+        // val must validate against one typ in typs
+        const l = typs.length;
+        for (let i = 0; i < l; i++) {
+            const typ = typs[i];
+            try {
+                return transform(val, typ, getProps);
+            } catch (_) {}
+        }
+        return invalidValue(typs, val, key, parent);
+    }
+
+    function transformEnum(cases: string[], val: any): any {
+        if (cases.indexOf(val) !== -1) return val;
+        return invalidValue(cases.map(a => { return l(a); }), val, key, parent);
+    }
+
+    function transformArray(typ: any, val: any): any {
+        // val must be an array with no invalid elements
+        if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
+
+        return val.map(el => transform(el, typ, getProps));
+    }
+
+    function transformDate(val: any): any {
+        if (val === null) {
+            return null;
+        }
+        const d = new Date(val);
+        if (isNaN(d.valueOf())) {
+            return invalidValue(l("Date"), val, key, parent);
+        }
+        return d;
+    }
+
+    function transformObject(props: { [k: string]: any }, additional: any, val: any): any {
+        if (val === null || typeof val !== "object" || Array.isArray(val)) {
+            return invalidValue(l(ref || "object"), val, key, parent);
+        }
+        const result: any = {};
+        Object.getOwnPropertyNames(props).forEach(key => {
+            const prop = props[key];
+            const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
+            result[prop.key] = transform(v, prop.typ, getProps, key, ref);
+        });
+        Object.getOwnPropertyNames(val).forEach(key => {
+            if (!Object.prototype.hasOwnProperty.call(props, key)) {
+                result[key] = transform(val[key], additional, getProps, key, ref);
+            }
+        });
+        return result;
+    }
+
+    if (typ === "any") return val;
+    if (typ === null) {
+        if (val === null) return val;
+        return invalidValue(typ, val, key, parent);
+    }
+    if (typ === false) return invalidValue(typ, val, key, parent);
+    let ref: any = undefined;
+    while (typeof typ === "object" && typ.ref !== undefined) {
+        ref = typ.ref;
+        typ = typeMap[typ.ref];
+    }
+    if (Array.isArray(typ)) return transformEnum(typ, val);
+    if (typeof typ === "object") {
+        return typ.hasOwnProperty("pattern")      ? typeof val === "string" && new RegExp(typ.pattern).test(val) ? val : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("string")       ? typeof val === "string" && (typ.min === undefined || val.length >= typ.min) && (typ.max === undefined || val.length <= typ.max) ? transform(val, typ.string, getProps, key, parent) : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("number")       ? typeof val === "number" && (typ.min === undefined || val >= typ.min) && (typ.max === undefined || val <= typ.max) ? transform(val, typ.number, getProps, key, parent) : invalidValue(typ, val, key, parent)
+            : typ.hasOwnProperty("integer")      ? typeof val === "number" && val % 1 === 0 ? val : invalidValue(l("integer"), val, key, parent)
+            : typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val)
+            : typ.hasOwnProperty("arrayItems")    ? transformArray(typ.arrayItems, val)
+            : typ.hasOwnProperty("props")         ? transformObject(getProps(typ), typ.additional, val)
+            : invalidValue(typ, val, key, parent);
+    }
+    // Numbers can be parsed by Date but shouldn't be.
+    if (typ === Date && typeof val !== "number") return transformDate(val);
+    return transformPrimitive(typ, val);
+}
+
+function cast<T>(val: any, typ: any): T {
+    return transform(val, typ, jsonToJSProps);
+}
+
+function uncast<T>(val: T, typ: any): any {
+    return transform(val, typ, jsToJSONProps);
+}
+
+function l(typ: any) {
+    return { literal: typ };
+}
+
+function a(typ: any) {
+    return { arrayItems: typ };
+}
+
+function i(typ: any) {
+    return { integer: typ };
+}
+
+function p(pattern: any) {
+    return { pattern };
+}
+
+function s(typ: any, min: any, max: any) {
+    return { string: typ, min, max };
+}
+
+function n(typ: any, min: any, max: any) {
+    return { number: typ, min, max };
+}
+
+function u(...typs: any[]) {
+    return { unionMembers: typs };
+}
+
+function o(props: any[], additional: any) {
+    return { props, additional };
+}
+
+function m(additional: any) {
+    const props: any[] = [];
+    return { props, additional };
+}
+
+function r(name: string) {
+    return { ref: name };
+}
+
+const typeMap: any = {
+    "TopLevel": o([
+        { json: "kind", js: "kind", typ: r("Kind") },
+    ], "any"),
+    "Kind": [
+        "only",
+    ],
+};
diff --git a/head/schema-typescript-effect-schema/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts
new file mode 100644
index 0000000..0bc28c0
--- /dev/null
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts
@@ -0,0 +1,11 @@
+import * as S from "effect/Schema";
+
+
+export const Kind = S.Literal(
+    "only",
+);
+export type Kind = S.Schema.Type<typeof Kind>;
+
+export class TopLevel extends S.Class<TopLevel>("TopLevel")({
+    "kind": Kind,
+}) {}
diff --git a/base/schema-typescript-zod/test/inputs/schema/bool-string.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/bool-string.schema/default/TopLevel.ts
index 88edd3b..bdea433 100644
--- a/base/schema-typescript-zod/test/inputs/schema/bool-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/bool-string.schema/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const UnionWithBoolAndEnumEnumSchema = z.enum([
-    "foo",
-]);
+export const UnionWithBoolAndEnumEnumSchema = z.literal("foo");
 export type UnionWithBoolAndEnumEnum = z.infer<typeof UnionWithBoolAndEnumEnumSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/schema-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
index ec5015b..b901f1b 100644
--- a/base/schema-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.ts
@@ -5,9 +5,7 @@ import * as z from "zod";
 // /*
 // This text must remain inside the generated enum documentation comment.
 
-export const KindSchema = z.enum([
-    "ok",
-]);
+export const KindSchema = z.literal("ok");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/schema-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
index 6599d9d..6df4655 100644
--- a/base/schema-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.ts
@@ -8,9 +8,7 @@ import * as z from "zod";
 // }
 // }
 
-export const KindSchema = z.enum([
-    "ok",
-]);
+export const KindSchema = z.literal("ok");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/schema-typescript-zod/test/inputs/schema/const-non-string.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
index 92c520e..118de43 100644
--- a/base/schema-typescript-zod/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/const-non-string.schema/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const KindSchema = z.enum([
-    "widget",
-]);
+export const KindSchema = z.literal("widget");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
index b07557c..f04dc7d 100644
--- a/base/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/date-time-or-string.schema/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const BarEnumSchema = z.enum([
-    "quux",
-]);
+export const BarEnumSchema = z.literal("quux");
 export type BarEnum = z.infer<typeof BarEnumSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/schema-typescript-zod/test/inputs/schema/integer-string.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/integer-string.schema/default/TopLevel.ts
index f326b01..ccae11c 100644
--- a/base/schema-typescript-zod/test/inputs/schema/integer-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/integer-string.schema/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const UnionWithIntAndEnumEnumSchema = z.enum([
-    "foo",
-]);
+export const UnionWithIntAndEnumEnumSchema = z.literal("foo");
 export type UnionWithIntAndEnumEnum = z.infer<typeof UnionWithIntAndEnumEnumSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/head/schema-typescript-zod/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts
new file mode 100644
index 0000000..d852681
--- /dev/null
+++ b/head/schema-typescript-zod/test/inputs/schema/single-value-enum.schema/default/TopLevel.ts
@@ -0,0 +1,10 @@
+import * as z from "zod";
+
+
+export const KindSchema = z.literal("only");
+export type Kind = z.infer<typeof KindSchema>;
+
+export const TopLevelSchema = z.object({
+    "kind": KindSchema,
+});
+export type TopLevel = z.infer<typeof TopLevelSchema>;
diff --git a/base/schema-typescript-zod/test/inputs/schema/uuid.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/uuid.schema/default/TopLevel.ts
index 0f56be9..f2a239b 100644
--- a/base/schema-typescript-zod/test/inputs/schema/uuid.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/uuid.schema/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const UnionWithEnumEnumSchema = z.enum([
-    "foo",
-]);
+export const UnionWithEnumEnumSchema = z.literal("foo");
 export type UnionWithEnumEnum = z.infer<typeof UnionWithEnumEnumSchema>;
 
 export const TopLevelSchema = z.object({
diff --git a/base/schema-typescript-zod/test/inputs/schema/vega-lite.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
index a7bc5c6..6ef4666 100644
--- a/base/schema-typescript-zod/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/vega-lite.schema/default/TopLevel.ts
@@ -187,9 +187,7 @@ export type FieldTitle = z.infer<typeof FieldTitleSchema>;
 // - If `null`, all data items are included. In this case, invalid values will be
 // interpreted as zeroes.
 
-export const InvalidValuesSchema = z.enum([
-    "filter",
-]);
+export const InvalidValuesSchema = z.literal("filter");
 export type InvalidValues = z.infer<typeof InvalidValuesSchema>;
 
 // The orientation of the legend, which determines how the legend is positioned within the
@@ -237,9 +235,7 @@ export type VgProjectionType = z.infer<typeof VgProjectionTypeSchema>;
 // used within the same view. This allows a user to interactively pan and
 // zoom the view.
 
-export const BindEnumSchema = z.enum([
-    "scales",
-]);
+export const BindEnumSchema = z.literal("scales");
 export type BindEnum = z.infer<typeof BindEnumSchema>;
 
 // By default, all data values are considered to lie within an empty selection.
@@ -327,9 +323,7 @@ export const TitleOrientSchema = z.enum([
 export type TitleOrient = z.infer<typeof TitleOrientSchema>;
 
 
-export const ParseEnumSchema = z.enum([
-    "auto",
-]);
+export const ParseEnumSchema = z.literal("auto");
 export type ParseEnum = z.infer<typeof ParseEnumSchema>;
 
 // Type of input data: `"json"`, `"csv"`, `"tsv"`.
@@ -467,9 +461,7 @@ export const LegendTypeSchema = z.enum([
 export type LegendType = z.infer<typeof LegendTypeSchema>;
 
 
-export const DomainSchema = z.enum([
-    "unaggregated",
-]);
+export const DomainSchema = z.literal("unaggregated");
 export type Domain = z.infer<typeof DomainSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/00ec5.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
index 7634f29..bb14677 100644
--- a/base/typescript-zod/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/00ec5.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const TypeSchema = z.enum([
-    "string",
-]);
+export const TypeSchema = z.literal("string");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const PropertySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/010b1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/010b1.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/010b1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/010b1.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/06bee.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/06bee.json/default/TopLevel.ts
index 5bbfe67..f63f71e 100644
--- a/base/typescript-zod/test/inputs/json/misc/06bee.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/06bee.json/default/TopLevel.ts
@@ -17,21 +17,15 @@ export const KeywordSchema = z.enum([
 export type Keyword = z.infer<typeof KeywordSchema>;
 
 
-export const NoteSchema = z.enum([
-    "OSI Page",
-]);
+export const NoteSchema = z.literal("OSI Page");
 export type Note = z.infer<typeof NoteSchema>;
 
 
-export const MediaTypeSchema = z.enum([
-    "text/html",
-]);
+export const MediaTypeSchema = z.literal("text/html");
 export type MediaType = z.infer<typeof MediaTypeSchema>;
 
 
-export const TitleSchema = z.enum([
-    "HTML",
-]);
+export const TitleSchema = z.literal("HTML");
 export type Title = z.infer<typeof TitleSchema>;
 
 export const IdentifierSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/0cffa.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
index 02bca10..82a48ae 100644
--- a/base/typescript-zod/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
@@ -8,9 +8,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/127a1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/127a1.json/default/TopLevel.ts
index bf649e3..ef86ddc 100644
--- a/base/typescript-zod/test/inputs/json/misc/127a1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/127a1.json/default/TopLevel.ts
@@ -1,15 +1,11 @@
 import * as z from "zod";
 
 
-export const RatingSchema = z.enum([
-    "g",
-]);
+export const RatingSchema = z.literal("g");
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/1a7f5.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index 39e2bf8..623c544 100644
--- a/base/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -32,9 +32,7 @@ export const NamemodSchema = z.enum([
 export type Namemod = z.infer<typeof NamemodSchema>;
 
 
-export const RoleTypeSchema = z.enum([
-    "representative",
-]);
+export const RoleTypeSchema = z.literal("representative");
 export type RoleType = z.infer<typeof RoleTypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/26b49.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/26b49.json/default/TopLevel.ts
index 982e53f..ee0d619 100644
--- a/base/typescript-zod/test/inputs/json/misc/26b49.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/26b49.json/default/TopLevel.ts
@@ -10,9 +10,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const The480_WStillSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/27332.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/27332.json/default/TopLevel.ts
index b0e40ec..7bf105f 100644
--- a/base/typescript-zod/test/inputs/json/misc/27332.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/27332.json/default/TopLevel.ts
@@ -17,33 +17,23 @@ export const PostHintSchema = z.enum([
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "pics",
-]);
+export const SubredditSchema = z.literal("pics");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2qh0u",
-]);
+export const SubredditIdSchema = z.literal("t5_2qh0u");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/pics",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/pics");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const OembedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/29f47.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/29f47.json/default/TopLevel.ts
index 343504d..9e761ee 100644
--- a/base/typescript-zod/test/inputs/json/misc/29f47.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/29f47.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const DistinguishedSchema = z.enum([
-    "admin",
-]);
+export const DistinguishedSchema = z.literal("admin");
 export type Distinguished = z.infer<typeof DistinguishedSchema>;
 
 
@@ -21,33 +19,23 @@ export const PostHintSchema = z.enum([
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "announcements",
-]);
+export const SubredditSchema = z.literal("announcements");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2r0ij",
-]);
+export const SubredditIdSchema = z.literal("t5_2r0ij");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/announcements",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/announcements");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "restricted",
-]);
+export const SubredditTypeSchema = z.literal("restricted");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const MediaEmbedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index 0deef1f..fc80e92 100644
--- a/base/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -31,15 +31,11 @@ export const NamemodSchema = z.enum([
 export type Namemod = z.infer<typeof NamemodSchema>;
 
 
-export const RoleTypeSchema = z.enum([
-    "senator",
-]);
+export const RoleTypeSchema = z.literal("senator");
 export type RoleType = z.infer<typeof RoleTypeSchema>;
 
 
-export const RoleTypeLabelSchema = z.enum([
-    "Senator",
-]);
+export const RoleTypeLabelSchema = z.literal("Senator");
 export type RoleTypeLabel = z.infer<typeof RoleTypeLabelSchema>;
 
 
@@ -73,9 +69,7 @@ export const SenatorRankLabelSchema = z.enum([
 export type SenatorRankLabel = z.infer<typeof SenatorRankLabelSchema>;
 
 
-export const TitleSchema = z.enum([
-    "Sen.",
-]);
+export const TitleSchema = z.literal("Sen.");
 export type Title = z.infer<typeof TitleSchema>;
 
 export const MetaSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/32431.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/32431.json/default/TopLevel.ts
index e0f114b..6b09325 100644
--- a/base/typescript-zod/test/inputs/json/misc/32431.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/32431.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const GeometryTypeSchema = z.enum([
-    "Point",
-]);
+export const GeometryTypeSchema = z.literal("Point");
 export type GeometryType = z.infer<typeof GeometryTypeSchema>;
 
 
@@ -22,15 +20,11 @@ export const StatusSchema = z.enum([
 export type Status = z.infer<typeof StatusSchema>;
 
 
-export const PropertiesTypeSchema = z.enum([
-    "earthquake",
-]);
+export const PropertiesTypeSchema = z.literal("earthquake");
 export type PropertiesType = z.infer<typeof PropertiesTypeSchema>;
 
 
-export const FeatureTypeSchema = z.enum([
-    "Feature",
-]);
+export const FeatureTypeSchema = z.literal("Feature");
 export type FeatureType = z.infer<typeof FeatureTypeSchema>;
 
 export const GeometrySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/34702.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/34702.json/default/TopLevel.ts
index bbb2b7d..66d9319 100644
--- a/base/typescript-zod/test/inputs/json/misc/34702.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/34702.json/default/TopLevel.ts
@@ -1,15 +1,11 @@
 import * as z from "zod";
 
 
-export const GeometryTypeSchema = z.enum([
-    "Point",
-]);
+export const GeometryTypeSchema = z.literal("Point");
 export type GeometryType = z.infer<typeof GeometryTypeSchema>;
 
 
-export const GeometryNameSchema = z.enum([
-    "geom",
-]);
+export const GeometryNameSchema = z.literal("geom");
 export type GeometryName = z.infer<typeof GeometryNameSchema>;
 
 
@@ -58,9 +54,7 @@ export const PropertiesTypeSchema = z.enum([
 export type PropertiesType = z.infer<typeof PropertiesTypeSchema>;
 
 
-export const FeatureTypeSchema = z.enum([
-    "Feature",
-]);
+export const FeatureTypeSchema = z.literal("Feature");
 export type FeatureType = z.infer<typeof FeatureTypeSchema>;
 
 export const CrsPropertiesSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index 7af027f..81f933f 100644
--- a/base/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const TextSchema = z.enum([
-    "Thunderstorms",
-]);
+export const TextSchema = z.literal("Thunderstorms");
 export type Text = z.infer<typeof TextSchema>;
 
 export const AstronomySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/437e7.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/437e7.json/default/TopLevel.ts
index 74844f3..d31e933 100644
--- a/base/typescript-zod/test/inputs/json/misc/437e7.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/437e7.json/default/TopLevel.ts
@@ -10,9 +10,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const DownsizedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/458db.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/458db.json/default/TopLevel.ts
index ba77f2d..1bbdd45 100644
--- a/base/typescript-zod/test/inputs/json/misc/458db.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/458db.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const NameSchema = z.enum([
-    "Office on Violence Against Women",
-]);
+export const NameSchema = z.literal("Office on Violence Against Women");
 export type Name = z.infer<typeof NameSchema>;
 
 export const ResponseInfoSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/4a455.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/4a455.json/default/TopLevel.ts
index 9dde2fe..d4bd0af 100644
--- a/base/typescript-zod/test/inputs/json/misc/4a455.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/4a455.json/default/TopLevel.ts
@@ -1,21 +1,15 @@
 import * as z from "zod";
 
 
-export const GeometryTypeSchema = z.enum([
-    "MultiPoint",
-]);
+export const GeometryTypeSchema = z.literal("MultiPoint");
 export type GeometryType = z.infer<typeof GeometryTypeSchema>;
 
 
-export const GeometryNameSchema = z.enum([
-    "geom",
-]);
+export const GeometryNameSchema = z.literal("geom");
 export type GeometryName = z.infer<typeof GeometryNameSchema>;
 
 
-export const FeatureTypeSchema = z.enum([
-    "Feature",
-]);
+export const FeatureTypeSchema = z.literal("Feature");
 export type FeatureType = z.infer<typeof FeatureTypeSchema>;
 
 export const CrsPropertiesSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
index 5c5ce2a..55197e2 100644
--- a/base/typescript-zod/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/4d6fb.json/default/TopLevel.ts
@@ -8,33 +8,23 @@ export const PostHintSchema = z.enum([
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "todayilearned",
-]);
+export const SubredditSchema = z.literal("todayilearned");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2qqjc",
-]);
+export const SubredditIdSchema = z.literal("t5_2qqjc");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/todayilearned",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/todayilearned");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const OembedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index 630e3b8..82af1f0 100644
--- a/base/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -21,9 +21,7 @@ export const WatermarkSchema = z.enum([
 export type Watermark = z.infer<typeof WatermarkSchema>;
 
 
-export const LayoutSchema = z.enum([
-    "normal",
-]);
+export const LayoutSchema = z.literal("normal");
 export type Layout = z.infer<typeof LayoutSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/66121.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/66121.json/default/TopLevel.ts
index b459abe..25bc1e6 100644
--- a/base/typescript-zod/test/inputs/json/misc/66121.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/66121.json/default/TopLevel.ts
@@ -17,21 +17,15 @@ export const KeywordSchema = z.enum([
 export type Keyword = z.infer<typeof KeywordSchema>;
 
 
-export const NoteSchema = z.enum([
-    "OSI Page",
-]);
+export const NoteSchema = z.literal("OSI Page");
 export type Note = z.infer<typeof NoteSchema>;
 
 
-export const MediaTypeSchema = z.enum([
-    "text/html",
-]);
+export const MediaTypeSchema = z.literal("text/html");
 export type MediaType = z.infer<typeof MediaTypeSchema>;
 
 
-export const TitleSchema = z.enum([
-    "HTML",
-]);
+export const TitleSchema = z.literal("HTML");
 export type Title = z.infer<typeof TitleSchema>;
 
 export const IdentifierSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/6de06.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/6de06.json/default/TopLevel.ts
index faac6d2..ad0b8d9 100644
--- a/base/typescript-zod/test/inputs/json/misc/6de06.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/6de06.json/default/TopLevel.ts
@@ -9,15 +9,11 @@ export const PostHintSchema = z.enum([
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const OembedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/7681c.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/7681c.json/default/TopLevel.ts
index c6ca384..8a4f4f6 100644
--- a/base/typescript-zod/test/inputs/json/misc/7681c.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/7681c.json/default/TopLevel.ts
@@ -9,9 +9,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/76ae1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
index 1e1c383..349af0d 100644
--- a/base/typescript-zod/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/76ae1.json/default/TopLevel.ts
@@ -1,21 +1,15 @@
 import * as z from "zod";
 
 
-export const FormatEnumSchema = z.enum([
-    "string",
-]);
+export const FormatEnumSchema = z.literal("string");
 export type FormatEnum = z.infer<typeof FormatEnumSchema>;
 
 
-export const InSchema = z.enum([
-    "query",
-]);
+export const InSchema = z.literal("query");
 export type In = z.infer<typeof InSchema>;
 
 
-export const SchemaTypeSchema = z.enum([
-    "array",
-]);
+export const SchemaTypeSchema = z.literal("array");
 export type SchemaType = z.infer<typeof SchemaTypeSchema>;
 
 export const PropertySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/7d397.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/7d397.json/default/TopLevel.ts
index 6872550..a297c02 100644
--- a/base/typescript-zod/test/inputs/json/misc/7d397.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/7d397.json/default/TopLevel.ts
@@ -1,15 +1,11 @@
 import * as z from "zod";
 
 
-export const TypeSchema = z.enum([
-    "string",
-]);
+export const TypeSchema = z.literal("string");
 export type Type = z.infer<typeof TypeSchema>;
 
 
-export const InSchema = z.enum([
-    "query",
-]);
+export const InSchema = z.literal("query");
 export type In = z.infer<typeof InSchema>;
 
 export const PropertySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/7eb30.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
index 3f1facc..dd5dfc9 100644
--- a/base/typescript-zod/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
@@ -1,21 +1,15 @@
 import * as z from "zod";
 
 
-export const CodeSchema = z.enum([
-    "sf",
-]);
+export const CodeSchema = z.literal("sf");
 export type Code = z.infer<typeof CodeSchema>;
 
 
-export const EnglishSchema = z.enum([
-    "SF",
-]);
+export const EnglishSchema = z.literal("SF");
 export type English = z.infer<typeof EnglishSchema>;
 
 
-export const ThaiSchema = z.enum([
-    "เอสเอฟ",
-]);
+export const ThaiSchema = z.literal("เอสเอฟ");
 export type Thai = z.infer<typeof ThaiSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts
index 9fab307..13d046a 100644
--- a/base/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/7f568.json/default/TopLevel.ts
@@ -1,15 +1,11 @@
 import * as z from "zod";
 
 
-export const LanguageSchema = z.enum([
-    "Markdown",
-]);
+export const LanguageSchema = z.literal("Markdown");
 export type Language = z.infer<typeof LanguageSchema>;
 
 
-export const TypeSchema = z.enum([
-    "text/plain",
-]);
+export const TypeSchema = z.literal("text/plain");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const FileSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/8592b.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/8592b.json/default/TopLevel.ts
index 596b205..53c5761 100644
--- a/base/typescript-zod/test/inputs/json/misc/8592b.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/8592b.json/default/TopLevel.ts
@@ -1,33 +1,23 @@
 import * as z from "zod";
 
 
-export const PostHintSchema = z.enum([
-    "link",
-]);
+export const PostHintSchema = z.literal("link");
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "science",
-]);
+export const SubredditSchema = z.literal("science");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_mouw",
-]);
+export const SubredditIdSchema = z.literal("t5_mouw");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/science",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/science");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
@@ -38,9 +28,7 @@ export const SuggestedSortSchema = z.enum([
 export type SuggestedSort = z.infer<typeof SuggestedSortSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const MediaEmbedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/a45b0.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/a45b0.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/ab0d1.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
index 7b14a27..e7f4d5d 100644
--- a/base/typescript-zod/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/ae7f0.json/default/TopLevel.ts
@@ -1,39 +1,27 @@
 import * as z from "zod";
 
 
-export const DomainSchema = z.enum([
-    "self.AskReddit",
-]);
+export const DomainSchema = z.literal("self.AskReddit");
 export type Domain = z.infer<typeof DomainSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "AskReddit",
-]);
+export const SubredditSchema = z.literal("AskReddit");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2qh1i",
-]);
+export const SubredditIdSchema = z.literal("t5_2qh1i");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/AskReddit",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/AskReddit");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const MediaEmbedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
index 1e60e21..ceaa83c 100644
--- a/base/typescript-zod/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const GeometryTypeSchema = z.enum([
-    "Point",
-]);
+export const GeometryTypeSchema = z.literal("Point");
 export type GeometryType = z.infer<typeof GeometryTypeSchema>;
 
 
@@ -16,9 +14,7 @@ export const ClassEnumSchema = z.enum([
 export type ClassEnum = z.infer<typeof ClassEnumSchema>;
 
 
-export const MaintainingAuthoritySchema = z.enum([
-    "City of Ballarat",
-]);
+export const MaintainingAuthoritySchema = z.literal("City of Ballarat");
 export type MaintainingAuthority = z.infer<typeof MaintainingAuthoritySchema>;
 
 
@@ -30,9 +26,7 @@ export const WardSchema = z.enum([
 export type Ward = z.infer<typeof WardSchema>;
 
 
-export const FeatureTypeSchema = z.enum([
-    "Feature",
-]);
+export const FeatureTypeSchema = z.literal("Feature");
 export type FeatureType = z.infer<typeof FeatureTypeSchema>;
 
 export const GeometrySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/af2d1.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
index 2f6ac0d..089f80f 100644
--- a/base/typescript-zod/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
@@ -1,15 +1,11 @@
 import * as z from "zod";
 
 
-export const GeometryTypeSchema = z.enum([
-    "MultiPolygon",
-]);
+export const GeometryTypeSchema = z.literal("MultiPolygon");
 export type GeometryType = z.infer<typeof GeometryTypeSchema>;
 
 
-export const GeometryNameSchema = z.enum([
-    "geom",
-]);
+export const GeometryNameSchema = z.literal("geom");
 export type GeometryName = z.infer<typeof GeometryNameSchema>;
 
 
@@ -49,27 +45,19 @@ export const MaterialSchema = z.enum([
 export type Material = z.infer<typeof MaterialSchema>;
 
 
-export const MiSymboloSchema = z.enum([
-    "Pen (2, 2, 65535) Brush (1, 0, 16777215)",
-]);
+export const MiSymboloSchema = z.literal("Pen (2, 2, 65535) Brush (1, 0, 16777215)");
 export type MiSymbolo = z.infer<typeof MiSymboloSchema>;
 
 
-export const StatusSchema = z.enum([
-    "CURRENT",
-]);
+export const StatusSchema = z.literal("CURRENT");
 export type Status = z.infer<typeof StatusSchema>;
 
 
-export const PropertiesTypeSchema = z.enum([
-    "Boat Ramp",
-]);
+export const PropertiesTypeSchema = z.literal("Boat Ramp");
 export type PropertiesType = z.infer<typeof PropertiesTypeSchema>;
 
 
-export const FeatureTypeSchema = z.enum([
-    "Feature",
-]);
+export const FeatureTypeSchema = z.literal("Feature");
 export type FeatureType = z.infer<typeof FeatureTypeSchema>;
 
 export const CrsPropertiesSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index f968c76..89aa71f 100644
--- a/base/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -8,15 +8,11 @@ export const FallSchema = z.enum([
 export type Fall = z.infer<typeof FallSchema>;
 
 
-export const TypeSchema = z.enum([
-    "Point",
-]);
+export const TypeSchema = z.literal("Point");
 export type Type = z.infer<typeof TypeSchema>;
 
 
-export const NametypeSchema = z.enum([
-    "Valid",
-]);
+export const NametypeSchema = z.literal("Valid");
 export type Nametype = z.infer<typeof NametypeSchema>;
 
 export const GeolocationSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/be234.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/be234.json/default/TopLevel.ts
index 56debe5..b26d0ad 100644
--- a/base/typescript-zod/test/inputs/json/misc/be234.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/be234.json/default/TopLevel.ts
@@ -19,33 +19,23 @@ export const PostHintSchema = z.enum([
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "funny",
-]);
+export const SubredditSchema = z.literal("funny");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2qh33",
-]);
+export const SubredditIdSchema = z.literal("t5_2qh33");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/funny",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/funny");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const OembedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/c3303.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/c3303.json/default/TopLevel.ts
index 68cc95e..b5ae225 100644
--- a/base/typescript-zod/test/inputs/json/misc/c3303.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/c3303.json/default/TopLevel.ts
@@ -9,9 +9,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index adcb59e..20c7b7b 100644
--- a/base/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -29,9 +29,7 @@ export const ColorSchema = z.enum([
 export type Color = z.infer<typeof ColorSchema>;
 
 
-export const LayoutSchema = z.enum([
-    "normal",
-]);
+export const LayoutSchema = z.literal("normal");
 export type Layout = z.infer<typeof LayoutSchema>;
 
 
@@ -87,9 +85,7 @@ export const RaritySchema = z.enum([
 export type Rarity = z.infer<typeof RaritySchema>;
 
 
-export const SupertypeSchema = z.enum([
-    "Basic",
-]);
+export const SupertypeSchema = z.literal("Basic");
 export type Supertype = z.infer<typeof SupertypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index adcb59e..20c7b7b 100644
--- a/base/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -29,9 +29,7 @@ export const ColorSchema = z.enum([
 export type Color = z.infer<typeof ColorSchema>;
 
 
-export const LayoutSchema = z.enum([
-    "normal",
-]);
+export const LayoutSchema = z.literal("normal");
 export type Layout = z.infer<typeof LayoutSchema>;
 
 
@@ -87,9 +85,7 @@ export const RaritySchema = z.enum([
 export type Rarity = z.infer<typeof RaritySchema>;
 
 
-export const SupertypeSchema = z.enum([
-    "Basic",
-]);
+export const SupertypeSchema = z.literal("Basic");
 export type Supertype = z.infer<typeof SupertypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
index 5cc167a..348c616 100644
--- a/base/typescript-zod/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
@@ -9,9 +9,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const DownsizedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index 1cc8fda..03780e2 100644
--- a/base/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const TextSchema = z.enum([
-    "Sunny",
-]);
+export const TextSchema = z.literal("Sunny");
 export type Text = z.infer<typeof TextSchema>;
 
 export const AstronomySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/e324e.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/e324e.json/default/TopLevel.ts
index 2e9f6ad..1397d68 100644
--- a/base/typescript-zod/test/inputs/json/misc/e324e.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/e324e.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const TypeSchema = z.enum([
-    "string",
-]);
+export const TypeSchema = z.literal("string");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const PropertySchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/e8a0b.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/e8b04.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
index 67d7c51..0564780 100644
--- a/base/typescript-zod/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
@@ -18,15 +18,11 @@ export const TopLevelFlagSchema = z.enum([
 export type TopLevelFlag = z.infer<typeof TopLevelFlagSchema>;
 
 
-export const GrantFlagSchema = z.enum([
-    "public",
-]);
+export const GrantFlagSchema = z.literal("public");
 export type GrantFlag = z.infer<typeof GrantFlagSchema>;
 
 
-export const GrantTypeSchema = z.enum([
-    "viewer",
-]);
+export const GrantTypeSchema = z.literal("viewer");
 export type GrantType = z.infer<typeof GrantTypeSchema>;
 
 
@@ -84,9 +80,7 @@ export const WidthSchema = z.enum([
 export type Width = z.infer<typeof WidthSchema>;
 
 
-export const ModifyingViewUidSchema = z.enum([
-    "s6ew-h6mp",
-]);
+export const ModifyingViewUidSchema = z.literal("s6ew-h6mp");
 export type ModifyingViewUid = z.infer<typeof ModifyingViewUidSchema>;
 
 
@@ -97,21 +91,15 @@ export const RoleNameSchema = z.enum([
 export type RoleName = z.infer<typeof RoleNameSchema>;
 
 
-export const ProvenanceSchema = z.enum([
-    "official",
-]);
+export const ProvenanceSchema = z.literal("official");
 export type Provenance = z.infer<typeof ProvenanceSchema>;
 
 
-export const PublicationStageSchema = z.enum([
-    "published",
-]);
+export const PublicationStageSchema = z.literal("published");
 export type PublicationStage = z.infer<typeof PublicationStageSchema>;
 
 
-export const RightSchema = z.enum([
-    "read",
-]);
+export const RightSchema = z.literal("read");
 export type Right = z.infer<typeof RightSchema>;
 
 
@@ -124,9 +112,7 @@ export const RowsUpdatedBySchema = z.enum([
 export type RowsUpdatedBy = z.infer<typeof RowsUpdatedBySchema>;
 
 
-export const ViewTypeSchema = z.enum([
-    "tabular",
-]);
+export const ViewTypeSchema = z.literal("tabular");
 export type ViewType = z.infer<typeof ViewTypeSchema>;
 
 export const GrantSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/f22f5.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
index f3a648d..8ea26b1 100644
--- a/base/typescript-zod/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/f22f5.json/default/TopLevel.ts
@@ -1,33 +1,23 @@
 import * as z from "zod";
 
 
-export const SubredditSchema = z.enum([
-    "worldnews",
-]);
+export const SubredditSchema = z.literal("worldnews");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2qh13",
-]);
+export const SubredditIdSchema = z.literal("t5_2qh13");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/worldnews",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/worldnews");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const MediaEmbedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/f3edf.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/f3edf.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/f466a.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/f466a.json/default/TopLevel.ts
index b8a003b..5a2e2ea 100644
--- a/base/typescript-zod/test/inputs/json/misc/f466a.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/f466a.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const CountrySchema = z.enum([
-    "United States",
-]);
+export const CountrySchema = z.literal("United States");
 export type Country = z.infer<typeof CountrySchema>;
 
 export const TopLevelElementSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/misc/f6a65.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
index f81c485..42d0d71 100644
--- a/base/typescript-zod/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
@@ -10,9 +10,7 @@ export const RatingSchema = z.enum([
 export type Rating = z.infer<typeof RatingSchema>;
 
 
-export const TypeSchema = z.enum([
-    "gif",
-]);
+export const TypeSchema = z.literal("gif");
 export type Type = z.infer<typeof TypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/misc/f82d9.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
index f94c99d..24d8be1 100644
--- a/base/typescript-zod/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/misc/f82d9.json/default/TopLevel.ts
@@ -1,9 +1,7 @@
 import * as z from "zod";
 
 
-export const TypeSchema = z.enum([
-    "string",
-]);
+export const TypeSchema = z.literal("string");
 export type Type = z.infer<typeof TypeSchema>;
 
 export const ClickUrlSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/priority/bug427.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/bug427.json/default/TopLevel.ts
index d1de85f..ba6b37e 100644
--- a/base/typescript-zod/test/inputs/json/priority/bug427.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/bug427.json/default/TopLevel.ts
@@ -67,9 +67,7 @@ export const FileNameSchema = z.enum([
 export type FileName = z.infer<typeof FileNameSchema>;
 
 
-export const ParameterKindStringSchema = z.enum([
-    "Parameter",
-]);
+export const ParameterKindStringSchema = z.literal("Parameter");
 export type ParameterKindString = z.infer<typeof ParameterKindStringSchema>;
 
 
@@ -86,9 +84,7 @@ export const FluffyKindStringSchema = z.enum([
 export type FluffyKindString = z.infer<typeof FluffyKindStringSchema>;
 
 
-export const TentacledKindStringSchema = z.enum([
-    "External module",
-]);
+export const TentacledKindStringSchema = z.literal("External module");
 export type TentacledKindString = z.infer<typeof TentacledKindStringSchema>;
 
 export type GetSignatureType = {
diff --git a/base/typescript-zod/test/inputs/json/priority/bug863.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/bug863.json/default/TopLevel.ts
index b22a547..643e9d1 100644
--- a/base/typescript-zod/test/inputs/json/priority/bug863.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/bug863.json/default/TopLevel.ts
@@ -24,9 +24,7 @@ export const LastnameSchema = z.enum([
 export type Lastname = z.infer<typeof LastnameSchema>;
 
 
-export const PvptitleSchema = z.enum([
-    "Freshman",
-]);
+export const PvptitleSchema = z.literal("Freshman");
 export type Pvptitle = z.infer<typeof PvptitleSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
index ff90a9b..826cb6e 100644
--- a/base/typescript-zod/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
@@ -11,9 +11,7 @@ export const LeaddatumEnumSchema = z.enum([
 export type LeaddatumEnum = z.infer<typeof LeaddatumEnumSchema>;
 
 
-export const PerTypeSchema = z.enum([
-    "REGULAR",
-]);
+export const PerTypeSchema = z.literal("REGULAR");
 export type PerType = z.infer<typeof PerTypeSchema>;
 
 
diff --git a/base/typescript-zod/test/inputs/json/samples/reddit.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/samples/reddit.json/default/TopLevel.ts
index 6ab6785..18908e8 100644
--- a/base/typescript-zod/test/inputs/json/samples/reddit.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/samples/reddit.json/default/TopLevel.ts
@@ -10,9 +10,7 @@ export const DomainSchema = z.enum([
 export type Domain = z.infer<typeof DomainSchema>;
 
 
-export const WhitelistStatusSchema = z.enum([
-    "all_ads",
-]);
+export const WhitelistStatusSchema = z.literal("all_ads");
 export type WhitelistStatus = z.infer<typeof WhitelistStatusSchema>;
 
 
@@ -23,33 +21,23 @@ export const PostHintSchema = z.enum([
 export type PostHint = z.infer<typeof PostHintSchema>;
 
 
-export const SubredditSchema = z.enum([
-    "funny",
-]);
+export const SubredditSchema = z.literal("funny");
 export type Subreddit = z.infer<typeof SubredditSchema>;
 
 
-export const SubredditIdSchema = z.enum([
-    "t5_2qh33",
-]);
+export const SubredditIdSchema = z.literal("t5_2qh33");
 export type SubredditId = z.infer<typeof SubredditIdSchema>;
 
 
-export const SubredditNamePrefixedSchema = z.enum([
-    "r/funny",
-]);
+export const SubredditNamePrefixedSchema = z.literal("r/funny");
 export type SubredditNamePrefixed = z.infer<typeof SubredditNamePrefixedSchema>;
 
 
-export const SubredditTypeSchema = z.enum([
-    "public",
-]);
+export const SubredditTypeSchema = z.literal("public");
 export type SubredditType = z.infer<typeof SubredditTypeSchema>;
 
 
-export const KindSchema = z.enum([
-    "t3",
-]);
+export const KindSchema = z.literal("t3");
 export type Kind = z.infer<typeof KindSchema>;
 
 export const MediaEmbedSchema = z.object({
diff --git a/base/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index d0aa369..0d11caf 100644
--- a/base/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -31,15 +31,11 @@ export const NamemodSchema = z.enum([
 export type Namemod = z.infer<typeof NamemodSchema>;
 
 
-export const RoleTypeSchema = z.enum([
-    "senator",
-]);
+export const RoleTypeSchema = z.literal("senator");
 export type RoleType = z.infer<typeof RoleTypeSchema>;
 
 
-export const RoleTypeLabelSchema = z.enum([
-    "Senator",
-]);
+export const RoleTypeLabelSchema = z.literal("Senator");
 export type RoleTypeLabel = z.infer<typeof RoleTypeLabelSchema>;
 
 
@@ -73,9 +69,7 @@ export const SenatorRankLabelSchema = z.enum([
 export type SenatorRankLabel = z.infer<typeof SenatorRankLabelSchema>;
 
 
-export const TitleSchema = z.enum([
-    "Sen.",
-]);
+export const TitleSchema = z.literal("Sen.");
 export type Title = z.infer<typeof TitleSchema>;
 
 export const MetaSchema = z.object({
