diff --git a/base/graphql-pike/test/inputs/graphql/github3.graphql/default/TopLevel.pmod b/head/graphql-pike/test/inputs/graphql/github3.graphql/default/TopLevel.pmod
index b1edbbb..ad624af 100644
--- a/base/graphql-pike/test/inputs/graphql/github3.graphql/default/TopLevel.pmod
+++ b/head/graphql-pike/test/inputs/graphql/github3.graphql/default/TopLevel.pmod
@@ -144,6 +144,10 @@ enum PullRequestState {
     MERGED = "MERGED", // json: "MERGED"
 }
 
+PullRequestState PullRequestState_from_JSON(mixed json) {
+    return json;
+}
+
 class Error {
     string message; // json: "message"
 
diff --git a/base/graphql-pike/test/inputs/graphql/github4.graphql/default/TopLevel.pmod b/head/graphql-pike/test/inputs/graphql/github4.graphql/default/TopLevel.pmod
index a305275..b5f219a 100644
--- a/base/graphql-pike/test/inputs/graphql/github4.graphql/default/TopLevel.pmod
+++ b/head/graphql-pike/test/inputs/graphql/github4.graphql/default/TopLevel.pmod
@@ -147,6 +147,10 @@ enum PullRequestState {
     MERGED = "MERGED", // json: "MERGED"
 }
 
+PullRequestState PullRequestState_from_JSON(mixed json) {
+    return json;
+}
+
 class Error {
     string message; // json: "message"
 
diff --git a/base/graphql-pike/test/inputs/graphql/github8.graphql/default/TopLevel.pmod b/head/graphql-pike/test/inputs/graphql/github8.graphql/default/TopLevel.pmod
index 9fdd0f6..dd147e2 100644
--- a/base/graphql-pike/test/inputs/graphql/github8.graphql/default/TopLevel.pmod
+++ b/head/graphql-pike/test/inputs/graphql/github8.graphql/default/TopLevel.pmod
@@ -112,6 +112,10 @@ enum IssueState {
     CLOSED = "CLOSED", // json: "CLOSED"
 }
 
+IssueState IssueState_from_JSON(mixed json) {
+    return json;
+}
+
 class Error {
     string message; // json: "message"
 
diff --git a/base/graphql-pike/test/inputs/graphql/github9.graphql/default/TopLevel.pmod b/head/graphql-pike/test/inputs/graphql/github9.graphql/default/TopLevel.pmod
index 94ae37a..9e709db 100644
--- a/base/graphql-pike/test/inputs/graphql/github9.graphql/default/TopLevel.pmod
+++ b/head/graphql-pike/test/inputs/graphql/github9.graphql/default/TopLevel.pmod
@@ -110,6 +110,10 @@ enum ReactionContent {
     HEART = "HEART",             // json: "HEART"
 }
 
+ReactionContent ReactionContent_from_JSON(mixed json) {
+    return json;
+}
+
 class Reactable {
     bool                  viewer_can_react; // json: "viewerCanReact"
     array(Reaction)|mixed reaction_groups;  // json: "reactionGroups"
diff --git a/base/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod
index aae8d14..3a47698 100644
--- a/base/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod
@@ -84,11 +84,19 @@ enum Id {
     NY_GDP_MKTP_CD = "NY.GDP.MKTP.CD", // json: "NY.GDP.MKTP.CD"
 }
 
+Id Id_from_JSON(mixed json) {
+    return json;
+}
+
 enum Value {
     UNITED_STATES = "United States",      // json: "United States"
     GDP_CURRENT_US = "GDP (current US$)", // json: "GDP (current US$)"
 }
 
+Value Value_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    page;     // json: "page"
     int    pages;    // json: "pages"
diff --git a/base/pike/test/inputs/json/misc/00ec5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/00ec5.json/default/TopLevel.pmod
index 506c8ed..9feaaa0 100644
--- a/base/pike/test/inputs/json/misc/00ec5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/00ec5.json/default/TopLevel.pmod
@@ -120,6 +120,10 @@ enum Type {
     STRING = "string", // json: "string"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class Info {
     string description; // json: "description"
     string title;       // json: "title"
diff --git a/base/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/050b0.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/050b0.json/default/TopLevel.pmod
index fade591..9685732 100644
--- a/base/pike/test/inputs/json/misc/050b0.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/050b0.json/default/TopLevel.pmod
@@ -88,6 +88,10 @@ enum Scheme {
     TROVE = "Trove", // json: "Trove"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     OSI_APPROVED = "osi-approved", // json: "osi-approved"
     POPULAR = "popular",           // json: "popular"
@@ -95,6 +99,10 @@ enum Keyword {
     COPYLEFT = "copyleft",         // json: "copyleft"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     Note   note; // json: "note"
     string url;  // json: "url"
@@ -126,6 +134,10 @@ enum Note {
     MOZILLA_PAGE = "Mozilla Page",          // json: "Mozilla Page"
 }
 
+Note Note_from_JSON(mixed json) {
+    return json;
+}
+
 class OtherName {
     string       name; // json: "name"
     mixed|string note; // json: "note"
@@ -180,7 +192,15 @@ enum MediaType {
     TEXT_PLAIN = "text/plain", // json: "text/plain"
 }
 
+MediaType MediaType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     HTML = "HTML",             // json: "HTML"
     PLAIN_TEXT = "Plain Text", // json: "Plain Text"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/06bee.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/06bee.json/default/TopLevel.pmod
index 85988e9..db53090 100644
--- a/base/pike/test/inputs/json/misc/06bee.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/06bee.json/default/TopLevel.pmod
@@ -88,12 +88,20 @@ enum Scheme {
     DEP5 = "DEP5",   // json: "DEP5"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     DISCOURAGED = "discouraged",   // json: "discouraged"
     NON_REUSABLE = "non-reusable", // json: "non-reusable"
     OSI_APPROVED = "osi-approved", // json: "osi-approved"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     Note   note; // json: "note"
     string url;  // json: "url"
@@ -121,6 +129,10 @@ enum Note {
     OSI_PAGE = "OSI Page", // json: "OSI Page"
 }
 
+Note Note_from_JSON(mixed json) {
+    return json;
+}
+
 class Text {
     MediaType media_type; // json: "media_type"
     Title     title;      // json: "title"
@@ -151,6 +163,14 @@ enum MediaType {
     TEXT_HTML = "text/html", // json: "text/html"
 }
 
+MediaType MediaType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     HTML = "HTML", // json: "HTML"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/0a91a.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/0a91a.json/default/TopLevel.pmod
index 8f8a3fc..9ba6c3a 100644
--- a/base/pike/test/inputs/json/misc/0a91a.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/0a91a.json/default/TopLevel.pmod
@@ -766,3 +766,7 @@ enum Type {
     PULL_REQUEST_EVENT = "PullRequestEvent", // json: "PullRequestEvent"
     DELETE_EVENT = "DeleteEvent",            // json: "DeleteEvent"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod
index 2a7a66d..99b718f 100644
--- a/base/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod
@@ -328,10 +328,18 @@ enum Rating {
     PG = "pg", // json: "pg"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string   avatar_url;   // json: "avatar_url"
     string   banner_url;   // json: "banner_url"
@@ -374,6 +382,10 @@ enum Username {
     NOWTHIS = "nowthis",         // json: "nowthis"
 }
 
+Username Username_from_JSON(mixed json) {
+    return json;
+}
+
 class Meta {
     string msg;         // json: "msg"
     string response_id; // json: "response_id"
diff --git a/base/pike/test/inputs/json/misc/0e0c2.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/0e0c2.json/default/TopLevel.pmod
index ba7fe0c..c4890e5 100644
--- a/base/pike/test/inputs/json/misc/0e0c2.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/0e0c2.json/default/TopLevel.pmod
@@ -175,6 +175,10 @@ enum DetailLanguage {
     TH = "th",        // json: "th"
 }
 
+DetailLanguage DetailLanguage_from_JSON(mixed json) {
+    return json;
+}
+
 class FavMovie {
     bool follow;  // json: "follow"
     bool star;    // json: "star"
@@ -238,11 +242,19 @@ enum Type {
     BACKDROP = "Backdrop", // json: "Backdrop"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 enum ResultLanguage {
     FLUFFY_EN = "en", // json: "en"
     EMPTY = "-",      // json: "-"
 }
 
+ResultLanguage ResultLanguage_from_JSON(mixed json) {
+    return json;
+}
+
 class Video {
     string         kind;     // json: "kind"
     ResultLanguage language; // json: "language"
diff --git a/base/pike/test/inputs/json/misc/10be4.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/10be4.json/default/TopLevel.pmod
index 4051e14..0e3cbff 100644
--- a/base/pike/test/inputs/json/misc/10be4.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/10be4.json/default/TopLevel.pmod
@@ -88,6 +88,10 @@ enum Scheme {
     DEP5 = "DEP5",   // json: "DEP5"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     OSI_APPROVED = "osi-approved",       // json: "osi-approved"
     DISCOURAGED = "discouraged",         // json: "discouraged"
@@ -103,6 +107,10 @@ enum Keyword {
     INTERNATIONAL = "international",     // json: "international"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     Note   note; // json: "note"
     string url;  // json: "url"
@@ -135,6 +143,10 @@ enum Note {
     OSET_FOUNDATION_PAGE = "OSET Foundation Page", // json: "OSET Foundation Page"
 }
 
+Note Note_from_JSON(mixed json) {
+    return json;
+}
+
 class OtherName {
     string       name; // json: "name"
     mixed|string note; // json: "note"
@@ -190,8 +202,16 @@ enum MediaType {
     APPLICATION_PDF = "application/pdf", // json: "application/pdf"
 }
 
+MediaType MediaType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     HTML = "HTML",             // json: "HTML"
     PLAIN_TEXT = "Plain Text", // json: "Plain Text"
     PDF = "PDF",               // json: "PDF"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod
index 3c25ab9..f11b5a0 100644
--- a/base/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod
@@ -327,10 +327,18 @@ enum Rating {
     G = "g", // json: "g"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string       avatar_url;   // json: "avatar_url"
     string       banner_url;   // json: "banner_url"
@@ -373,6 +381,10 @@ enum Username {
     DISNEYZOOTOPIA = "disneyzootopia",     // json: "disneyzootopia"
 }
 
+Username Username_from_JSON(mixed json) {
+    return json;
+}
+
 class Meta {
     string msg;         // json: "msg"
     string response_id; // json: "response_id"
diff --git a/base/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/1b409.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/1b409.json/default/TopLevel.pmod
index 0dc6afe..5f0b2be 100644
--- a/base/pike/test/inputs/json/misc/1b409.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/1b409.json/default/TopLevel.pmod
@@ -178,6 +178,10 @@ enum Party {
     DEMOCRAT = "Democrat",     // json: "Democrat"
 }
 
+Party Party_from_JSON(mixed json) {
+    return json;
+}
+
 class Person {
     string       bioguideid;   // json: "bioguideid"
     string       birthday;     // json: "birthday"
@@ -254,11 +258,19 @@ enum Gender {
     FEMALE = "female", // json: "female"
 }
 
+Gender Gender_from_JSON(mixed json) {
+    return json;
+}
+
 enum GenderLabel {
     GENDER_LABEL_MALE = "Male",     // json: "Male"
     GENDER_LABEL_FEMALE = "Female", // json: "Female"
 }
 
+GenderLabel GenderLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum Namemod {
     EMPTY = "",  // json: ""
     JR = "Jr.",  // json: "Jr."
@@ -267,17 +279,33 @@ enum Namemod {
     IV = "IV",   // json: "IV"
 }
 
+Namemod Namemod_from_JSON(mixed json) {
+    return json;
+}
+
 enum RoleType {
     REPRESENTATIVE = "representative", // json: "representative"
 }
 
+RoleType RoleType_from_JSON(mixed json) {
+    return json;
+}
+
 enum RoleTypeLabel {
     ROLE_TYPE_LABEL_REPRESENTATIVE = "Representative", // json: "Representative"
     DELEGATE = "Delegate",                             // json: "Delegate"
     RESIDENT_COMMISSIONER = "Resident Commissioner",   // json: "Resident Commissioner"
 }
 
+RoleTypeLabel RoleTypeLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     REP = "Rep.",         // json: "Rep."
     COMMISH = "Commish.", // json: "Commish."
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod
index ff9a47d..2cb1561 100644
--- a/base/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod
@@ -300,6 +300,10 @@ enum Text {
     PARTLY_CLOUDY = "Partly Cloudy", // json: "Partly Cloudy"
 }
 
+Text Text_from_JSON(mixed json) {
+    return json;
+}
+
 class Forecast {
     string code; // json: "code"
     string date; // json: "date"
diff --git a/base/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod
index 6f0f8df..70a2abd 100644
--- a/base/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod
@@ -333,10 +333,18 @@ enum Rating {
     Y = "y",         // json: "y"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string       avatar_url;   // json: "avatar_url"
     string       banner_url;   // json: "banner_url"
diff --git a/base/pike/test/inputs/json/misc/27332.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/27332.json/default/TopLevel.pmod
index 00a5d6c..cf75224 100644
--- a/base/pike/test/inputs/json/misc/27332.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/27332.json/default/TopLevel.pmod
@@ -303,6 +303,10 @@ enum Domain {
     I_REDD_IT = "i.redd.it",     // json: "i.redd.it"
 }
 
+Domain Domain_from_JSON(mixed json) {
+    return json;
+}
+
 class Media {
     Oembed oembed; // json: "oembed"
     Domain type;   // json: "type"
@@ -413,6 +417,10 @@ enum PostHint {
     IMAGE = "image", // json: "image"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -511,18 +519,38 @@ enum Subreddit {
     PICS = "pics", // json: "pics"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_QH0_U = "t5_2qh0u", // json: "t5_2qh0u"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_PICS = "r/pics", // json: "r/pics"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/29f47.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/29f47.json/default/TopLevel.pmod
index 6326f84..a0fff3a 100644
--- a/base/pike/test/inputs/json/misc/29f47.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/29f47.json/default/TopLevel.pmod
@@ -300,11 +300,19 @@ enum Distinguished {
     ADMIN = "admin", // json: "admin"
 }
 
+Distinguished Distinguished_from_JSON(mixed json) {
+    return json;
+}
+
 enum Domain {
     SELF_ANNOUNCEMENTS = "self.announcements", // json: "self.announcements"
     I_REDD_IT = "i.redd.it",                   // json: "i.redd.it"
 }
 
+Domain Domain_from_JSON(mixed json) {
+    return json;
+}
+
 typedef bool|float Edited;
 
 Edited Edited_from_JSON(mixed json) {
@@ -332,6 +340,10 @@ enum PostHint {
     IMAGE = "image", // json: "image"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -460,18 +472,38 @@ enum Subreddit {
     ANNOUNCEMENTS = "announcements", // json: "announcements"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_R0_IJ = "t5_2r0ij", // json: "t5_2r0ij"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_ANNOUNCEMENTS = "r/announcements", // json: "r/announcements"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     RESTRICTED = "restricted", // json: "restricted"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/2d4e2.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/2d4e2.json/default/TopLevel.pmod
index 6c32a57..f1fab93 100644
--- a/base/pike/test/inputs/json/misc/2d4e2.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/2d4e2.json/default/TopLevel.pmod
@@ -153,6 +153,10 @@ enum Party {
     INDEPENDENT = "Independent", // json: "Independent"
 }
 
+Party Party_from_JSON(mixed json) {
+    return json;
+}
+
 class Extra {
     string       address;      // json: "address"
     string       contact_form; // json: "contact_form"
@@ -261,47 +265,87 @@ enum Gender {
     FEMALE = "female", // json: "female"
 }
 
+Gender Gender_from_JSON(mixed json) {
+    return json;
+}
+
 enum GenderLabel {
     GENDER_LABEL_MALE = "Male",     // json: "Male"
     GENDER_LABEL_FEMALE = "Female", // json: "Female"
 }
 
+GenderLabel GenderLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum Namemod {
     EMPTY = "",  // json: ""
     III = "III", // json: "III"
     JR = "Jr.",  // json: "Jr."
 }
 
+Namemod Namemod_from_JSON(mixed json) {
+    return json;
+}
+
 enum RoleType {
     SENATOR = "senator", // json: "senator"
 }
 
+RoleType RoleType_from_JSON(mixed json) {
+    return json;
+}
+
 enum RoleTypeLabel {
     ROLE_TYPE_LABEL_SENATOR = "Senator", // json: "Senator"
 }
 
+RoleTypeLabel RoleTypeLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorClass {
     CLASS2 = "class2", // json: "class2"
     CLASS1 = "class1", // json: "class1"
     CLASS3 = "class3", // json: "class3"
 }
 
+SenatorClass SenatorClass_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorClassLabel {
     CLASS_2 = "Class 2", // json: "Class 2"
     CLASS_1 = "Class 1", // json: "Class 1"
     CLASS_3 = "Class 3", // json: "Class 3"
 }
 
+SenatorClassLabel SenatorClassLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorRank {
     SENIOR = "senior", // json: "senior"
     JUNIOR = "junior", // json: "junior"
 }
 
+SenatorRank SenatorRank_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorRankLabel {
     SENATOR_RANK_LABEL_SENIOR = "Senior", // json: "Senior"
     SENATOR_RANK_LABEL_JUNIOR = "Junior", // json: "Junior"
 }
 
+SenatorRankLabel SenatorRankLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     SEN = "Sen.", // json: "Sen."
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod
index 608a3f5..1ce7303 100644
--- a/base/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod
@@ -119,6 +119,10 @@ enum Id {
     NAC = "NAC", // json: "NAC"
 }
 
+Id Id_from_JSON(mixed json) {
+    return json;
+}
+
 enum Value {
     VALUE = "",                                                                                            // json: ""
     SOUTH_ASIA = "South Asia",                                                                             // json: "South Asia"
@@ -144,6 +148,10 @@ enum Value {
     NORTH_AMERICA = "North America",                                                                       // json: "North America"
 }
 
+Value Value_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    page;     // json: "page"
     int    pages;    // json: "pages"
diff --git a/base/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod
index c2ef9b8..8c9c5fe 100644
--- a/base/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod
@@ -97,6 +97,10 @@ enum GeometryType {
     POINT = "Point", // json: "Point"
 }
 
+GeometryType GeometryType_from_JSON(mixed json) {
+    return json;
+}
+
 class Properties {
     mixed          alert;    // json: "alert"
     mixed          cdi;      // json: "cdi"
@@ -198,19 +202,35 @@ enum MagType {
     MB = "mb", // json: "mb"
 }
 
+MagType MagType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Status {
     AUTOMATIC = "automatic", // json: "automatic"
     REVIEWED = "reviewed",   // json: "reviewed"
 }
 
+Status Status_from_JSON(mixed json) {
+    return json;
+}
+
 enum PropertiesType {
     EARTHQUAKE = "earthquake", // json: "earthquake"
 }
 
+PropertiesType PropertiesType_from_JSON(mixed json) {
+    return json;
+}
+
 enum FeatureType {
     FEATURE = "Feature", // json: "Feature"
 }
 
+FeatureType FeatureType_from_JSON(mixed json) {
+    return json;
+}
+
 class Metadata {
     string api;       // json: "api"
     int    count;     // json: "count"
diff --git a/base/pike/test/inputs/json/misc/337ed.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/337ed.json/default/TopLevel.pmod
index 601cd1b..6fd3bef 100644
--- a/base/pike/test/inputs/json/misc/337ed.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/337ed.json/default/TopLevel.pmod
@@ -225,13 +225,25 @@ enum Status {
     INACTIVE = "inactive", // json: "inactive"
 }
 
+Status Status_from_JSON(mixed json) {
+    return json;
+}
+
 enum CustomIncomeType {
     PUBLIC = "public", // json: "public"
     OTHER = "other",   // json: "other"
 }
 
+CustomIncomeType CustomIncomeType_from_JSON(mixed json) {
+    return json;
+}
+
 enum ResultType {
     FINANCIAL_DATA_NGO = "FinancialDataNGO",                            // json: "FinancialDataNGO"
     FINANCIAL_DATA_LAWYER = "FinancialDataLawyer",                      // json: "FinancialDataLawyer"
     FINANCIAL_DATA_TRADE_ASSOCIATION = "FinancialDataTradeAssociation", // json: "FinancialDataTradeAssociation"
 }
+
+ResultType ResultType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/33d2e.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/33d2e.json/default/TopLevel.pmod
index b75df26..d012f9b 100644
--- a/base/pike/test/inputs/json/misc/33d2e.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/33d2e.json/default/TopLevel.pmod
@@ -94,6 +94,10 @@ enum Gender {
     ORG = "org",       // json: "org"
 }
 
+Gender Gender_from_JSON(mixed json) {
+    return json;
+}
+
 class Prize {
     array(AffiliationElement) affiliations;       // json: "affiliations"
     Category|mixed            category;           // json: "category"
@@ -169,3 +173,7 @@ enum Category {
     LITERATURE = "literature", // json: "literature"
     ECONOMICS = "economics",   // json: "economics"
 }
+
+Category Category_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod
index 2a104ae..8e1284e 100644
--- a/base/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod
@@ -143,10 +143,18 @@ enum GeometryType {
     POINT = "Point", // json: "Point"
 }
 
+GeometryType GeometryType_from_JSON(mixed json) {
+    return json;
+}
+
 enum GeometryName {
     GEOM = "geom", // json: "geom"
 }
 
+GeometryName GeometryName_from_JSON(mixed json) {
+    return json;
+}
+
 class FeatureProperties {
     string               division;   // json: "division"
     float                fax;        // json: "fax"
@@ -222,6 +230,10 @@ enum FireBanR {
     BALLARAT = "Ballarat",                          // json: "Ballarat"
 }
 
+FireBanR FireBanR_from_JSON(mixed json) {
+    return json;
+}
+
 enum Region {
     EASTERN = "Eastern",               // json: "Eastern"
     NORTHERN_METRO = "Northern Metro", // json: "Northern Metro"
@@ -229,6 +241,10 @@ enum Region {
     SOUTHERN_METRO = "Southern Metro", // json: "Southern Metro"
 }
 
+Region Region_from_JSON(mixed json) {
+    return json;
+}
+
 enum PropertiesType {
     STREET = "STREET",       // json: "STREET"
     AVENUE = "AVENUE",       // json: "AVENUE"
@@ -248,6 +264,14 @@ enum PropertiesType {
     RD = "RD",               // json: "RD"
 }
 
+PropertiesType PropertiesType_from_JSON(mixed json) {
+    return json;
+}
+
 enum FeatureType {
     FEATURE = "Feature", // json: "Feature"
 }
+
+FeatureType FeatureType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/3536b.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/3536b.json/default/TopLevel.pmod
index b03f149..98c923d 100644
--- a/base/pike/test/inputs/json/misc/3536b.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/3536b.json/default/TopLevel.pmod
@@ -88,12 +88,20 @@ enum Scheme {
     TROVE = "Trove", // json: "Trove"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     DISCOURAGED = "discouraged",   // json: "discouraged"
     OBSOLETE = "obsolete",         // json: "obsolete"
     OSI_APPROVED = "osi-approved", // json: "osi-approved"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     string note; // json: "note"
     string url;  // json: "url"
diff --git a/base/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod
index d7d6fda..5c3306e 100644
--- a/base/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod
@@ -333,6 +333,10 @@ enum Text {
     THUNDERSTORMS = "Thunderstorms", // json: "Thunderstorms"
 }
 
+Text Text_from_JSON(mixed json) {
+    return json;
+}
+
 class Guid {
     string is_perma_link; // json: "isPermaLink"
 
diff --git a/base/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod
index bdd14af..777785d 100644
--- a/base/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod
@@ -324,10 +324,18 @@ enum Rating {
     PG_13 = "pg-13", // json: "pg-13"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string avatar_url;   // json: "avatar_url"
     string banner_url;   // json: "banner_url"
diff --git a/base/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod
index 4d66c25..cdff8cf 100644
--- a/base/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod
@@ -192,3 +192,7 @@ Component Component_from_JSON(mixed json) {
 enum Name {
     OFFICE_ON_VIOLENCE_AGAINST_WOMEN = "Office on Violence Against Women", // json: "Office on Violence Against Women"
 }
+
+Name Name_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod
index ddc8097..64ee0d4 100644
--- a/base/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod
@@ -143,10 +143,18 @@ enum GeometryType {
     MULTI_POINT = "MultiPoint", // json: "MultiPoint"
 }
 
+GeometryType GeometryType_from_JSON(mixed json) {
+    return json;
+}
+
 enum GeometryName {
     GEOM = "geom", // json: "geom"
 }
 
+GeometryName GeometryName_from_JSON(mixed json) {
+    return json;
+}
+
 class FeatureProperties {
     string facebookaccount;    // json: "facebookaccount"
     string frequencyfinderurl; // json: "frequencyfinderurl"
@@ -185,3 +193,7 @@ FeatureProperties FeatureProperties_from_JSON(mixed json) {
 enum FeatureType {
     FEATURE = "Feature", // json: "Feature"
 }
+
+FeatureType FeatureType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/4d6fb.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4d6fb.json/default/TopLevel.pmod
index 5218cac..a884b4b 100644
--- a/base/pike/test/inputs/json/misc/4d6fb.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4d6fb.json/default/TopLevel.pmod
@@ -409,6 +409,10 @@ enum PostHint {
     LINK = "link",             // json: "link"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -507,18 +511,38 @@ enum Subreddit {
     TODAYILEARNED = "todayilearned", // json: "todayilearned"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_QQJC = "t5_2qqjc", // json: "t5_2qqjc"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_TODAYILEARNED = "r/todayilearned", // json: "r/todayilearned"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/54d32.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/54d32.json/default/TopLevel.pmod
index cfc057c..658fcdf 100644
--- a/base/pike/test/inputs/json/misc/54d32.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/54d32.json/default/TopLevel.pmod
@@ -105,3 +105,7 @@ enum Status {
     INACTIVE = "inactive", // json: "inactive"
     ACTIVE = "active",     // json: "active"
 }
+
+Status Status_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/570ec.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/570ec.json/default/TopLevel.pmod
index b0b08a5..f3b22d0 100644
--- a/base/pike/test/inputs/json/misc/570ec.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/570ec.json/default/TopLevel.pmod
@@ -88,6 +88,10 @@ enum Scheme {
     TROVE = "Trove", // json: "Trove"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     string note; // json: "note"
     string url;  // json: "url"
diff --git a/base/pike/test/inputs/json/misc/5f7fe.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/5f7fe.json/default/TopLevel.pmod
index a680af1..d2f0903 100644
--- a/base/pike/test/inputs/json/misc/5f7fe.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/5f7fe.json/default/TopLevel.pmod
@@ -303,6 +303,10 @@ enum TypeName {
     TEXT = "text",                   // json: "text"
 }
 
+TypeName TypeName_from_JSON(mixed json) {
+    return json;
+}
+
 class Format {
     mixed|string align; // json: "align"
     mixed|string view;  // json: "view"
diff --git a/base/pike/test/inputs/json/misc/617e8.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/617e8.json/default/TopLevel.pmod
index d74d7f6..c3bfabd 100644
--- a/base/pike/test/inputs/json/misc/617e8.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/617e8.json/default/TopLevel.pmod
@@ -306,6 +306,10 @@ enum TypeName {
     TEXT = "text",                   // json: "text"
 }
 
+TypeName TypeName_from_JSON(mixed json) {
+    return json;
+}
+
 class Format {
     mixed|string align; // json: "align"
     mixed|string view;  // json: "view"
diff --git a/base/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod
index 5ba5fc4..cef01d7 100644
--- a/base/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod
@@ -171,6 +171,10 @@ enum ColorIdentity {
     U = "U", // json: "U"
 }
 
+ColorIdentity ColorIdentity_from_JSON(mixed json) {
+    return json;
+}
+
 enum Watermark {
     WHITE = "White", // json: "White"
     RED = "Red",     // json: "Red"
@@ -179,10 +183,18 @@ enum Watermark {
     BLUE = "Blue",   // json: "Blue"
 }
 
+Watermark Watermark_from_JSON(mixed json) {
+    return json;
+}
+
 enum Layout {
     NORMAL = "normal", // json: "normal"
 }
 
+Layout Layout_from_JSON(mixed json) {
+    return json;
+}
+
 class LegalityElement {
     string       format;   // json: "format"
     LegalityEnum legality; // json: "legality"
@@ -212,6 +224,10 @@ enum LegalityEnum {
     RESTRICTED = "Restricted", // json: "Restricted"
 }
 
+LegalityEnum LegalityEnum_from_JSON(mixed json) {
+    return json;
+}
+
 enum Rarity {
     UNCOMMON = "Uncommon",     // json: "Uncommon"
     RARE = "Rare",             // json: "Rare"
@@ -219,6 +235,10 @@ enum Rarity {
     BASIC_LAND = "Basic Land", // json: "Basic Land"
 }
 
+Rarity Rarity_from_JSON(mixed json) {
+    return json;
+}
+
 class Ruling {
     string date; // json: "date"
     string text; // json: "text"
@@ -250,3 +270,7 @@ enum Type {
     ENCHANTMENT = "Enchantment", // json: "Enchantment"
     SORCERY = "Sorcery",         // json: "Sorcery"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/66121.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/66121.json/default/TopLevel.pmod
index 9270fc6..a5f34d0 100644
--- a/base/pike/test/inputs/json/misc/66121.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/66121.json/default/TopLevel.pmod
@@ -88,12 +88,20 @@ enum Scheme {
     DEP5 = "DEP5",   // json: "DEP5"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     OSI_APPROVED = "osi-approved", // json: "osi-approved"
     DISCOURAGED = "discouraged",   // json: "discouraged"
     REDUNDANT = "redundant",       // json: "redundant"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     Note   note; // json: "note"
     string url;  // json: "url"
@@ -121,6 +129,10 @@ enum Note {
     OSI_PAGE = "OSI Page", // json: "OSI Page"
 }
 
+Note Note_from_JSON(mixed json) {
+    return json;
+}
+
 class Text {
     MediaType media_type; // json: "media_type"
     Title     title;      // json: "title"
@@ -151,6 +163,14 @@ enum MediaType {
     TEXT_HTML = "text/html", // json: "text/html"
 }
 
+MediaType MediaType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     HTML = "HTML", // json: "HTML"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/6de06.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/6de06.json/default/TopLevel.pmod
index 5c409d7..3efdc19 100644
--- a/base/pike/test/inputs/json/misc/6de06.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/6de06.json/default/TopLevel.pmod
@@ -407,6 +407,10 @@ enum PostHint {
     RICH_VIDEO = "rich:video", // json: "rich:video"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -541,6 +545,14 @@ enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod
index ecba06a..5ed35f2 100644
--- a/base/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod
@@ -335,6 +335,10 @@ enum Text {
     PARTLY_CLOUDY = "Partly Cloudy", // json: "Partly Cloudy"
 }
 
+Text Text_from_JSON(mixed json) {
+    return json;
+}
+
 class Guid {
     string is_perma_link; // json: "isPermaLink"
 
diff --git a/base/pike/test/inputs/json/misc/734ad.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/734ad.json/default/TopLevel.pmod
index ddad8a3..61a1077 100644
--- a/base/pike/test/inputs/json/misc/734ad.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/734ad.json/default/TopLevel.pmod
@@ -261,3 +261,7 @@ enum Status {
     ACTIVE = "active",     // json: "active"
     INACTIVE = "inactive", // json: "inactive"
 }
+
+Status Status_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod
index d44fc28..90a8abf 100644
--- a/base/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod
@@ -329,10 +329,18 @@ enum Rating {
     PG_13 = "pg-13", // json: "pg-13"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string       avatar_url;   // json: "avatar_url"
     string       banner_url;   // json: "banner_url"
@@ -375,6 +383,10 @@ enum Username {
     ORIGINALS = "Originals", // json: "Originals"
 }
 
+Username Username_from_JSON(mixed json) {
+    return json;
+}
+
 class Meta {
     string msg;         // json: "msg"
     string response_id; // json: "response_id"
diff --git a/base/pike/test/inputs/json/misc/76ae1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/76ae1.json/default/TopLevel.pmod
index a0c6c9c..58ce6eb 100644
--- a/base/pike/test/inputs/json/misc/76ae1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/76ae1.json/default/TopLevel.pmod
@@ -156,6 +156,10 @@ enum FormatEnum {
     STRING = "string", // json: "string"
 }
 
+FormatEnum FormatEnum_from_JSON(mixed json) {
+    return json;
+}
+
 class DeMinimis {
     DeMinimisProperties properties; // json: "properties"
 
@@ -576,6 +580,10 @@ enum In {
     QUERY = "query", // json: "query"
 }
 
+In In_from_JSON(mixed json) {
+    return json;
+}
+
 class PurpleResponses {
     Purple200 the_200; // json: "200"
 
@@ -760,3 +768,7 @@ PurpleSchema PurpleSchema_from_JSON(mixed json) {
 enum SchemaType {
     ARRAY = "array", // json: "array"
 }
+
+SchemaType SchemaType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/77392.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/77392.json/default/TopLevel.pmod
index 8b98f88..a0e39a2 100644
--- a/base/pike/test/inputs/json/misc/77392.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/77392.json/default/TopLevel.pmod
@@ -77,8 +77,16 @@ enum OrbitClass {
     ENCKE_TYPE_COMET = "Encke-type Comet",                      // json: "Encke-type Comet"
 }
 
+OrbitClass OrbitClass_from_JSON(mixed json) {
+    return json;
+}
+
 enum Pha {
     Y = "Y",     // json: "Y"
     N = "N",     // json: "N"
     N_A = "n/a", // json: "n/a"
 }
+
+Pha Pha_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/7d397.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7d397.json/default/TopLevel.pmod
index 5b73efd..8df5434 100644
--- a/base/pike/test/inputs/json/misc/7d397.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7d397.json/default/TopLevel.pmod
@@ -120,6 +120,10 @@ enum Type {
     STRING = "string", // json: "string"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class Info {
     string description; // json: "description"
     string title;       // json: "title"
@@ -257,6 +261,10 @@ enum In {
     QUERY = "query", // json: "query"
 }
 
+In In_from_JSON(mixed json) {
+    return json;
+}
+
 class Responses {
     The200 the_200; // json: "200"
 
diff --git a/base/pike/test/inputs/json/misc/7f568.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7f568.json/default/TopLevel.pmod
index 417b94e..c831faa 100644
--- a/base/pike/test/inputs/json/misc/7f568.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7f568.json/default/TopLevel.pmod
@@ -119,6 +119,14 @@ enum Language {
     MARKDOWN = "Markdown", // json: "Markdown"
 }
 
+Language Language_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     TEXT_PLAIN = "text/plain", // json: "text/plain"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod
index 5ddbe79..8f9323a 100644
--- a/base/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod
@@ -84,11 +84,19 @@ enum Id {
     NY_GDP_MKTP_CD = "NY.GDP.MKTP.CD", // json: "NY.GDP.MKTP.CD"
 }
 
+Id Id_from_JSON(mixed json) {
+    return json;
+}
+
 enum Value {
     CHINA = "China",                      // json: "China"
     GDP_CURRENT_US = "GDP (current US$)", // json: "GDP (current US$)"
 }
 
+Value Value_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    page;     // json: "page"
     int    pages;    // json: "pages"
diff --git a/base/pike/test/inputs/json/misc/8592b.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/8592b.json/default/TopLevel.pmod
index 5425e78..9cfb10f 100644
--- a/base/pike/test/inputs/json/misc/8592b.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/8592b.json/default/TopLevel.pmod
@@ -316,6 +316,10 @@ enum PostHint {
     LINK = "link", // json: "link"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -398,23 +402,47 @@ enum Subreddit {
     SCIENCE = "science", // json: "science"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_MOUW = "t5_mouw", // json: "t5_mouw"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_SCIENCE = "r/science", // json: "r/science"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum SuggestedSort {
     CONFIDENCE = "confidence", // json: "confidence"
     QA = "qa",                 // json: "qa"
 }
 
+SuggestedSort SuggestedSort_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/996bd.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/996bd.json/default/TopLevel.pmod
index b5d5e68..be9ff28 100644
--- a/base/pike/test/inputs/json/misc/996bd.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/996bd.json/default/TopLevel.pmod
@@ -88,6 +88,10 @@ enum Scheme {
     TROVE = "Trove", // json: "Trove"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     OSI_APPROVED = "osi-approved",   // json: "osi-approved"
     POPULAR = "popular",             // json: "popular"
@@ -95,6 +99,10 @@ enum Keyword {
     INTERNATIONAL = "international", // json: "international"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     string note; // json: "note"
     string url;  // json: "url"
@@ -149,7 +157,15 @@ enum MediaType {
     TEXT_HTML = "text/html",   // json: "text/html"
 }
 
+MediaType MediaType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     PLAIN_TEXT = "Plain Text", // json: "Plain Text"
     HTML = "HTML",             // json: "HTML"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/9a503.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/9a503.json/default/TopLevel.pmod
index b92a83d..d899b04 100644
--- a/base/pike/test/inputs/json/misc/9a503.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/9a503.json/default/TopLevel.pmod
@@ -88,6 +88,10 @@ enum Keyword {
     OSI_APPROVED = "osi-approved", // json: "osi-approved"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     string note; // json: "note"
     string url;  // json: "url"
diff --git a/base/pike/test/inputs/json/misc/9ac3b.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/9ac3b.json/default/TopLevel.pmod
index 3001a90..1a1fa83 100644
--- a/base/pike/test/inputs/json/misc/9ac3b.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/9ac3b.json/default/TopLevel.pmod
@@ -121,7 +121,15 @@ enum Status {
     ACTIVE = "active",     // json: "active"
 }
 
+Status Status_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     MR = "Mr", // json: "Mr"
     MS = "Ms", // json: "Ms"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/9eed5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/9eed5.json/default/TopLevel.pmod
index f2b9e3b..fc24664 100644
--- a/base/pike/test/inputs/json/misc/9eed5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/9eed5.json/default/TopLevel.pmod
@@ -87,6 +87,10 @@ enum Keyword {
     OSI_APPROVED = "osi-approved",       // json: "osi-approved"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     string note; // json: "note"
     string url;  // json: "url"
diff --git a/base/pike/test/inputs/json/misc/a3d8c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/a3d8c.json/default/TopLevel.pmod
index 7f1229d..e0c86bd 100644
--- a/base/pike/test/inputs/json/misc/a3d8c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/a3d8c.json/default/TopLevel.pmod
@@ -306,6 +306,10 @@ enum TypeName {
     TEXT = "text",           // json: "text"
 }
 
+TypeName TypeName_from_JSON(mixed json) {
+    return json;
+}
+
 class Query {
 
     string encode_json() {
diff --git a/base/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/ad8be.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/ad8be.json/default/TopLevel.pmod
index 4051e14..0e3cbff 100644
--- a/base/pike/test/inputs/json/misc/ad8be.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/ad8be.json/default/TopLevel.pmod
@@ -88,6 +88,10 @@ enum Scheme {
     DEP5 = "DEP5",   // json: "DEP5"
 }
 
+Scheme Scheme_from_JSON(mixed json) {
+    return json;
+}
+
 enum Keyword {
     OSI_APPROVED = "osi-approved",       // json: "osi-approved"
     DISCOURAGED = "discouraged",         // json: "discouraged"
@@ -103,6 +107,10 @@ enum Keyword {
     INTERNATIONAL = "international",     // json: "international"
 }
 
+Keyword Keyword_from_JSON(mixed json) {
+    return json;
+}
+
 class Link {
     Note   note; // json: "note"
     string url;  // json: "url"
@@ -135,6 +143,10 @@ enum Note {
     OSET_FOUNDATION_PAGE = "OSET Foundation Page", // json: "OSET Foundation Page"
 }
 
+Note Note_from_JSON(mixed json) {
+    return json;
+}
+
 class OtherName {
     string       name; // json: "name"
     mixed|string note; // json: "note"
@@ -190,8 +202,16 @@ enum MediaType {
     APPLICATION_PDF = "application/pdf", // json: "application/pdf"
 }
 
+MediaType MediaType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     HTML = "HTML",             // json: "HTML"
     PLAIN_TEXT = "Plain Text", // json: "Plain Text"
     PDF = "PDF",               // json: "PDF"
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/ae7f0.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/ae7f0.json/default/TopLevel.pmod
index 87db988..152f4d1 100644
--- a/base/pike/test/inputs/json/misc/ae7f0.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/ae7f0.json/default/TopLevel.pmod
@@ -288,6 +288,10 @@ enum Domain {
     SELF_ASK_REDDIT = "self.AskReddit", // json: "self.AskReddit"
 }
 
+Domain Domain_from_JSON(mixed json) {
+    return json;
+}
+
 class MediaEmbed {
 
     string encode_json() {
@@ -308,18 +312,38 @@ enum Subreddit {
     ASK_REDDIT = "AskReddit", // json: "AskReddit"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_QH1_I = "t5_2qh1i", // json: "t5_2qh1i"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_ASK_REDDIT = "r/AskReddit", // json: "r/AskReddit"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/ae9ca.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/ae9ca.json/default/TopLevel.pmod
index 4bf647b..c1b5d34 100644
--- a/base/pike/test/inputs/json/misc/ae9ca.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/ae9ca.json/default/TopLevel.pmod
@@ -91,6 +91,10 @@ enum GeometryType {
     POINT = "Point", // json: "Point"
 }
 
+GeometryType GeometryType_from_JSON(mixed json) {
+    return json;
+}
+
 class Properties {
     string               area;                  // json: "Area"
     string               central_asset_id;      // json: "Central Asset ID"
@@ -142,6 +146,10 @@ enum MaintainingAuthority {
     CITY_OF_BALLARAT = "City of Ballarat", // json: "City of Ballarat"
 }
 
+MaintainingAuthority MaintainingAuthority_from_JSON(mixed json) {
+    return json;
+}
+
 enum Class {
     NO_CODE_ALLOCATED = "No Code Allocated", // json: "No Code Allocated"
     OS_DISTRICT = "OS-District",             // json: "OS-District"
@@ -149,12 +157,24 @@ enum Class {
     OS_REGIONAL = "OS-Regional",             // json: "OS-Regional"
 }
 
+Class Class_from_JSON(mixed json) {
+    return json;
+}
+
 enum Ward {
     SOUTH = "South",     // json: "South"
     NORTH = "North",     // json: "North"
     CENTRAL = "Central", // json: "Central"
 }
 
+Ward Ward_from_JSON(mixed json) {
+    return json;
+}
+
 enum FeatureType {
     FEATURE = "Feature", // json: "Feature"
 }
+
+FeatureType FeatureType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod
index 5db677e..7209650 100644
--- a/base/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod
@@ -143,10 +143,18 @@ enum GeometryType {
     MULTI_POLYGON = "MultiPolygon", // json: "MultiPolygon"
 }
 
+GeometryType GeometryType_from_JSON(mixed json) {
+    return json;
+}
+
 enum GeometryName {
     GEOM = "geom", // json: "geom"
 }
 
+GeometryName GeometryName_from_JSON(mixed json) {
+    return json;
+}
+
 class FeatureProperties {
     AddImprov|mixed      add_improv; // json: "add_improv"
     float                area;       // json: "area_"
@@ -284,6 +292,10 @@ enum AddImprov {
     T = "t",            // json: "t"
 }
 
+AddImprov AddImprov_from_JSON(mixed json) {
+    return json;
+}
+
 enum FundingBa {
     NON_GCCC = "Non GCCC",     // json: "Non GCCC"
     CAPEX = "Capex",           // json: "Capex"
@@ -291,12 +303,20 @@ enum FundingBa {
     CONTRIBUTE = "Contribute", // json: "Contribute"
 }
 
+FundingBa FundingBa_from_JSON(mixed json) {
+    return json;
+}
+
 enum LevelAccu {
     GPS_CORRECTED_10_M = "GPS Corrected 1.0M",  // json: "GPS Corrected 1.0M"
     APPROX = "APPROX",                          // json: "APPROX"
     GPS_C_ORRECTED_10_M = "GPS COrrected 1.0M", // json: "GPS COrrected 1.0M"
 }
 
+LevelAccu LevelAccu_from_JSON(mixed json) {
+    return json;
+}
+
 enum Material {
     GRAVEL = "Gravel",                             // json: "Gravel"
     CONCRETE = "Concrete",                         // json: "Concrete"
@@ -306,18 +326,38 @@ enum Material {
     EARTH = "Earth",                               // json: "Earth"
 }
 
+Material Material_from_JSON(mixed json) {
+    return json;
+}
+
 enum MiSymbolo {
     PEN_2265535_BRUSH_1016777215 = "Pen (2, 2, 65535) Brush (1, 0, 16777215)", // json: "Pen (2, 2, 65535) Brush (1, 0, 16777215)"
 }
 
+MiSymbolo MiSymbolo_from_JSON(mixed json) {
+    return json;
+}
+
 enum Status {
     CURRENT = "CURRENT", // json: "CURRENT"
 }
 
+Status Status_from_JSON(mixed json) {
+    return json;
+}
+
 enum PropertiesType {
     BOAT_RAMP = "Boat Ramp", // json: "Boat Ramp"
 }
 
+PropertiesType PropertiesType_from_JSON(mixed json) {
+    return json;
+}
+
 enum FeatureType {
     FEATURE = "Feature", // json: "Feature"
 }
+
+FeatureType FeatureType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/b4865.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/b4865.json/default/TopLevel.pmod
index 89b5a91..02e231f 100644
--- a/base/pike/test/inputs/json/misc/b4865.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/b4865.json/default/TopLevel.pmod
@@ -76,6 +76,10 @@ enum Fall {
     FOUND = "Found", // json: "Found"
 }
 
+Fall Fall_from_JSON(mixed json) {
+    return json;
+}
+
 class Geolocation {
     array(float) coordinates; // json: "coordinates"
     Type         type;        // json: "type"
@@ -103,6 +107,14 @@ enum Type {
     POINT = "Point", // json: "Point"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 enum Nametype {
     VALID = "Valid", // json: "Valid"
 }
+
+Nametype Nametype_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/be234.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/be234.json/default/TopLevel.pmod
index bd856a8..d79ba7a 100644
--- a/base/pike/test/inputs/json/misc/be234.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/be234.json/default/TopLevel.pmod
@@ -304,6 +304,10 @@ enum Domain {
     IMGUR_COM = "imgur.com",     // json: "imgur.com"
 }
 
+Domain Domain_from_JSON(mixed json) {
+    return json;
+}
+
 class Media {
     Oembed oembed; // json: "oembed"
     Domain type;   // json: "type"
@@ -415,6 +419,10 @@ enum PostHint {
     RICH_VIDEO = "rich:video", // json: "rich:video"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -543,18 +551,38 @@ enum Subreddit {
     FUNNY = "funny", // json: "funny"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_QH33 = "t5_2qh33", // json: "t5_2qh33"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_FUNNY = "r/funny", // json: "r/funny"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod
index 2c5a38b..b3d8e34 100644
--- a/base/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod
@@ -329,10 +329,18 @@ enum Rating {
     PG_13 = "pg-13", // json: "pg-13"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string   avatar_url;   // json: "avatar_url"
     string   banner_url;   // json: "banner_url"
@@ -370,6 +378,10 @@ enum Username {
     DISNEYPIXAR = "disneypixar", // json: "disneypixar"
 }
 
+Username Username_from_JSON(mixed json) {
+    return json;
+}
+
 class Meta {
     string msg;         // json: "msg"
     string response_id; // json: "response_id"
diff --git a/base/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod
index 3f06b48..e40fdd1 100644
--- a/base/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod
@@ -84,11 +84,19 @@ enum Id {
     NY_GDP_MKTP_CD = "NY.GDP.MKTP.CD", // json: "NY.GDP.MKTP.CD"
 }
 
+Id Id_from_JSON(mixed json) {
+    return json;
+}
+
 enum Value {
     INDIA = "India",                      // json: "India"
     GDP_CURRENT_US = "GDP (current US$)", // json: "GDP (current US$)"
 }
 
+Value Value_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    page;     // json: "page"
     int    pages;    // json: "pages"
diff --git a/base/pike/test/inputs/json/misc/cb0cc.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/cb0cc.json/default/TopLevel.pmod
index 285892e..b617bf5 100644
--- a/base/pike/test/inputs/json/misc/cb0cc.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/cb0cc.json/default/TopLevel.pmod
@@ -70,6 +70,10 @@ enum Category {
     ECONOMICS = "economics",   // json: "economics"
 }
 
+Category Category_from_JSON(mixed json) {
+    return json;
+}
+
 class Laureate {
     string       firstname;  // json: "firstname"
     string       id;         // json: "id"
diff --git a/base/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod
index 36a80d1..178e9ad 100644
--- a/base/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod
@@ -84,11 +84,19 @@ enum Id {
     SP_POP_TOTL = "SP.POP.TOTL", // json: "SP.POP.TOTL"
 }
 
+Id Id_from_JSON(mixed json) {
+    return json;
+}
+
 enum Value {
     CHINA = "China",                        // json: "China"
     POPULATION_TOTAL = "Population, total", // json: "Population, total"
 }
 
+Value Value_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    page;     // json: "page"
     int    pages;    // json: "pages"
diff --git a/base/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod
index 09f754d..8c789c5 100644
--- a/base/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod
@@ -299,6 +299,10 @@ enum Text {
     SUNNY = "Sunny",               // json: "Sunny"
 }
 
+Text Text_from_JSON(mixed json) {
+    return json;
+}
+
 class Forecast {
     string code; // json: "code"
     string date; // json: "date"
diff --git a/base/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod
index ffa2170..abdeb58 100644
--- a/base/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod
@@ -68,6 +68,10 @@ enum Booster {
     COMMON = "common",     // json: "common"
 }
 
+Booster Booster_from_JSON(mixed json) {
+    return json;
+}
+
 class Card {
     string                     artist;         // json: "artist"
     int                        cmc;            // json: "cmc"
@@ -174,6 +178,10 @@ enum ColorIdentity {
     R = "R", // json: "R"
 }
 
+ColorIdentity ColorIdentity_from_JSON(mixed json) {
+    return json;
+}
+
 enum Color {
     BLUE = "Blue",   // json: "Blue"
     BLACK = "Black", // json: "Black"
@@ -182,10 +190,18 @@ enum Color {
     RED = "Red",     // json: "Red"
 }
 
+Color Color_from_JSON(mixed json) {
+    return json;
+}
+
 enum Layout {
     NORMAL = "normal", // json: "normal"
 }
 
+Layout Layout_from_JSON(mixed json) {
+    return json;
+}
+
 class LegalityElement {
     Format       format;   // json: "format"
     LegalityEnum legality; // json: "legality"
@@ -242,12 +258,20 @@ enum Format {
     ZENDIKAR_BLOCK = "Zendikar Block",                             // json: "Zendikar Block"
 }
 
+Format Format_from_JSON(mixed json) {
+    return json;
+}
+
 enum LegalityEnum {
     LEGAL = "Legal",           // json: "Legal"
     BANNED = "Banned",         // json: "Banned"
     RESTRICTED = "Restricted", // json: "Restricted"
 }
 
+LegalityEnum LegalityEnum_from_JSON(mixed json) {
+    return json;
+}
+
 enum Rarity {
     RARITY_UNCOMMON = "Uncommon", // json: "Uncommon"
     RARITY_RARE = "Rare",         // json: "Rare"
@@ -255,6 +279,10 @@ enum Rarity {
     BASIC_LAND = "Basic Land",    // json: "Basic Land"
 }
 
+Rarity Rarity_from_JSON(mixed json) {
+    return json;
+}
+
 class Ruling {
     string date; // json: "date"
     string text; // json: "text"
@@ -282,6 +310,10 @@ enum Supertype {
     BASIC = "Basic", // json: "Basic"
 }
 
+Supertype Supertype_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     CREATURE = "Creature",       // json: "Creature"
     INSTANT = "Instant",         // json: "Instant"
@@ -290,3 +322,7 @@ enum Type {
     SORCERY = "Sorcery",         // json: "Sorcery"
     LAND = "Land",               // json: "Land"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod
index ffa2170..abdeb58 100644
--- a/base/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod
@@ -68,6 +68,10 @@ enum Booster {
     COMMON = "common",     // json: "common"
 }
 
+Booster Booster_from_JSON(mixed json) {
+    return json;
+}
+
 class Card {
     string                     artist;         // json: "artist"
     int                        cmc;            // json: "cmc"
@@ -174,6 +178,10 @@ enum ColorIdentity {
     R = "R", // json: "R"
 }
 
+ColorIdentity ColorIdentity_from_JSON(mixed json) {
+    return json;
+}
+
 enum Color {
     BLUE = "Blue",   // json: "Blue"
     BLACK = "Black", // json: "Black"
@@ -182,10 +190,18 @@ enum Color {
     RED = "Red",     // json: "Red"
 }
 
+Color Color_from_JSON(mixed json) {
+    return json;
+}
+
 enum Layout {
     NORMAL = "normal", // json: "normal"
 }
 
+Layout Layout_from_JSON(mixed json) {
+    return json;
+}
+
 class LegalityElement {
     Format       format;   // json: "format"
     LegalityEnum legality; // json: "legality"
@@ -242,12 +258,20 @@ enum Format {
     ZENDIKAR_BLOCK = "Zendikar Block",                             // json: "Zendikar Block"
 }
 
+Format Format_from_JSON(mixed json) {
+    return json;
+}
+
 enum LegalityEnum {
     LEGAL = "Legal",           // json: "Legal"
     BANNED = "Banned",         // json: "Banned"
     RESTRICTED = "Restricted", // json: "Restricted"
 }
 
+LegalityEnum LegalityEnum_from_JSON(mixed json) {
+    return json;
+}
+
 enum Rarity {
     RARITY_UNCOMMON = "Uncommon", // json: "Uncommon"
     RARITY_RARE = "Rare",         // json: "Rare"
@@ -255,6 +279,10 @@ enum Rarity {
     BASIC_LAND = "Basic Land",    // json: "Basic Land"
 }
 
+Rarity Rarity_from_JSON(mixed json) {
+    return json;
+}
+
 class Ruling {
     string date; // json: "date"
     string text; // json: "text"
@@ -282,6 +310,10 @@ enum Supertype {
     BASIC = "Basic", // json: "Basic"
 }
 
+Supertype Supertype_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     CREATURE = "Creature",       // json: "Creature"
     INSTANT = "Instant",         // json: "Instant"
@@ -290,3 +322,7 @@ enum Type {
     SORCERY = "Sorcery",         // json: "Sorcery"
     LAND = "Land",               // json: "Land"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod
index 43bbc00..8a009d4 100644
--- a/base/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod
@@ -329,10 +329,18 @@ enum Rating {
     Y = "y",   // json: "y"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string avatar_url;   // json: "avatar_url"
     string banner_url;   // json: "banner_url"
diff --git a/base/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod
index 2355310..30a87ec 100644
--- a/base/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod
@@ -333,6 +333,10 @@ enum Text {
     SUNNY = "Sunny", // json: "Sunny"
 }
 
+Text Text_from_JSON(mixed json) {
+    return json;
+}
+
 class Guid {
     string is_perma_link; // json: "isPermaLink"
 
diff --git a/base/pike/test/inputs/json/misc/e324e.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e324e.json/default/TopLevel.pmod
index 0abcb12..78994c4 100644
--- a/base/pike/test/inputs/json/misc/e324e.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e324e.json/default/TopLevel.pmod
@@ -120,6 +120,10 @@ enum Type {
     STRING = "string", // json: "string"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class Info {
     string description; // json: "description"
     string title;       // json: "title"
diff --git a/base/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod
index 9c1fd62..85c412e 100644
--- a/base/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod
@@ -84,11 +84,19 @@ enum Id {
     SP_POP_TOTL = "SP.POP.TOTL", // json: "SP.POP.TOTL"
 }
 
+Id Id_from_JSON(mixed json) {
+    return json;
+}
+
 enum Value {
     INDIA = "India",                        // json: "India"
     POPULATION_TOTAL = "Population, total", // json: "Population, total"
 }
 
+Value Value_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    page;     // json: "page"
     int    pages;    // json: "pages"
diff --git a/base/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/e8b04.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e8b04.json/default/TopLevel.pmod
index d680c4c..1b57409 100644
--- a/base/pike/test/inputs/json/misc/e8b04.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e8b04.json/default/TopLevel.pmod
@@ -162,12 +162,20 @@ enum DisplayType {
     PAGE = "page",           // json: "page"
 }
 
+DisplayType DisplayType_from_JSON(mixed json) {
+    return json;
+}
+
 enum TopLevelFlag {
     DEFAULT = "default",                                  // json: "default"
     RESTORABLE = "restorable",                            // json: "restorable"
     RESTORE_POSSIBLE_FOR_TYPE = "restorePossibleForType", // json: "restorePossibleForType"
 }
 
+TopLevelFlag TopLevelFlag_from_JSON(mixed json) {
+    return json;
+}
+
 class Grant {
     array(GrantFlag) flags;     // json: "flags"
     bool             inherited; // json: "inherited"
@@ -198,10 +206,18 @@ enum GrantFlag {
     PUBLIC = "public", // json: "public"
 }
 
+GrantFlag GrantFlag_from_JSON(mixed json) {
+    return json;
+}
+
 enum GrantType {
     VIEWER = "viewer", // json: "viewer"
 }
 
+GrantType GrantType_from_JSON(mixed json) {
+    return json;
+}
+
 class TopLevelMetadata {
     array(DisplayType)|mixed       available_display_types; // json: "availableDisplayTypes"
     CustomFields|mixed             custom_fields;           // json: "custom_fields"
@@ -367,6 +383,10 @@ enum OrderColumnFieldName {
     IN_EFFECT_AS_OF_1_1_2012 = "in_effect_as_of_1_1_2012", // json: "in_effect_as_of_1_1_2012"
 }
 
+OrderColumnFieldName OrderColumnFieldName_from_JSON(mixed json) {
+    return json;
+}
+
 class Select {
     mixed|string aggregate;         // json: "aggregate"
     string       column_field_name; // json: "columnFieldName"
@@ -458,6 +478,10 @@ enum ChildColumnFieldName {
     ISSUE = "issue",                                     // json: "issue"
 }
 
+ChildColumnFieldName ChildColumnFieldName_from_JSON(mixed json) {
+    return json;
+}
+
 class ChildMetadata {
     array(string)|mixed    custom_values;   // json: "customValues"
     bool|mixed             freeform;        // json: "freeform"
@@ -498,6 +522,10 @@ enum MetadataOperator {
     BLANK = "blank?",         // json: "blank?"
 }
 
+MetadataOperator MetadataOperator_from_JSON(mixed json) {
+    return json;
+}
+
 class TableColumnId {
     int the_2819740; // json: "2819740"
 
@@ -523,11 +551,19 @@ enum ChildOperator {
     IS_NOT_BLANK = "IS_NOT_BLANK", // json: "IS_NOT_BLANK"
 }
 
+ChildOperator ChildOperator_from_JSON(mixed json) {
+    return json;
+}
+
 enum WhereOperator {
     TENTACLED_EQUALS = "EQUALS", // json: "EQUALS"
     AND = "AND",                 // json: "AND"
 }
 
+WhereOperator WhereOperator_from_JSON(mixed json) {
+    return json;
+}
+
 class MetadataRenderTypeConfig {
     PurpleVisible visible; // json: "visible"
 
@@ -682,6 +718,10 @@ enum FieldType {
     COLUMN_DATA = "columnData",   // json: "columnData"
 }
 
+FieldType FieldType_from_JSON(mixed json) {
+    return json;
+}
+
 class Styles {
     Width width; // json: "width"
 
@@ -709,6 +749,10 @@ enum Width {
     THE_33 = "33%", // json: "33%"
 }
 
+Width Width_from_JSON(mixed json) {
+    return json;
+}
+
 class V1ArchivedProperties {
     AccessPoints                         access_points;      // json: "accessPoints"
     string                               blist_id;           // json: "blist_id"
@@ -799,6 +843,10 @@ enum ModifyingViewUid {
     S6_EW_H6_MP = "s6ew-h6mp", // json: "s6ew-h6mp"
 }
 
+ModifyingViewUid ModifyingViewUid_from_JSON(mixed json) {
+    return json;
+}
+
 class Owner {
     string              display_name;              // json: "displayName"
     array(string)|mixed flags;                     // json: "flags"
@@ -851,14 +899,26 @@ enum RoleName {
     PUBLISHER = "publisher",         // json: "publisher"
 }
 
+RoleName RoleName_from_JSON(mixed json) {
+    return json;
+}
+
 enum Provenance {
     OFFICIAL = "official", // json: "official"
 }
 
+Provenance Provenance_from_JSON(mixed json) {
+    return json;
+}
+
 enum PublicationStage {
     PUBLISHED = "published", // json: "published"
 }
 
+PublicationStage PublicationStage_from_JSON(mixed json) {
+    return json;
+}
+
 class Ratings {
     int rating; // json: "rating"
 
@@ -883,6 +943,10 @@ enum Right {
     READ = "read", // json: "read"
 }
 
+Right Right_from_JSON(mixed json) {
+    return json;
+}
+
 enum RowsUpdatedBy {
     PJXG_VE4_M = "pjxg-ve4m",      // json: "pjxg-ve4m"
     THE_54_A3_QYUN = "54a3-qyun",  // json: "54a3-qyun"
@@ -890,6 +954,10 @@ enum RowsUpdatedBy {
     VVCA_FR6_G = "vvca-fr6g",      // json: "vvca-fr6g"
 }
 
+RowsUpdatedBy RowsUpdatedBy_from_JSON(mixed json) {
+    return json;
+}
+
 class TableAuthor {
     string              display_name; // json: "displayName"
     string              id;           // json: "id"
@@ -925,3 +993,7 @@ TableAuthor TableAuthor_from_JSON(mixed json) {
 enum ViewType {
     TABULAR = "tabular", // json: "tabular"
 }
+
+ViewType ViewType_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/f22f5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f22f5.json/default/TopLevel.pmod
index b1f6e4b..0023705 100644
--- a/base/pike/test/inputs/json/misc/f22f5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f22f5.json/default/TopLevel.pmod
@@ -304,18 +304,38 @@ enum Subreddit {
     WORLDNEWS = "worldnews", // json: "worldnews"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_QH13 = "t5_2qh13", // json: "t5_2qh13"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_WORLDNEWS = "r/worldnews", // json: "r/worldnews"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod
index c42fe4e..4cb5a1d 100644
--- a/base/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod
@@ -56,3 +56,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 enum Country {
     UNITED_STATES = "United States", // json: "United States"
 }
+
+Country Country_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod
index 9117549..eabba42 100644
--- a/base/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod
@@ -330,10 +330,18 @@ enum Rating {
     PG_13 = "pg-13", // json: "pg-13"
 }
 
+Rating Rating_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GIF = "gif", // json: "gif"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class User {
     string   avatar_url;   // json: "avatar_url"
     string   banner_url;   // json: "banner_url"
@@ -376,6 +384,10 @@ enum Username {
     CHEEZBURGER = "cheezburger", // json: "cheezburger"
 }
 
+Username Username_from_JSON(mixed json) {
+    return json;
+}
+
 class Meta {
     string msg;         // json: "msg"
     string response_id; // json: "response_id"
diff --git a/base/pike/test/inputs/json/misc/f74d5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f74d5.json/default/TopLevel.pmod
index 7f1229d..e0c86bd 100644
--- a/base/pike/test/inputs/json/misc/f74d5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f74d5.json/default/TopLevel.pmod
@@ -306,6 +306,10 @@ enum TypeName {
     TEXT = "text",           // json: "text"
 }
 
+TypeName TypeName_from_JSON(mixed json) {
+    return json;
+}
+
 class Query {
 
     string encode_json() {
diff --git a/base/pike/test/inputs/json/misc/f82d9.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f82d9.json/default/TopLevel.pmod
index 41e360e..d670798 100644
--- a/base/pike/test/inputs/json/misc/f82d9.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f82d9.json/default/TopLevel.pmod
@@ -167,6 +167,10 @@ enum Type {
     STRING = "string", // json: "string"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class Info {
     string description; // json: "description"
     string title;       // json: "title"
diff --git a/base/pike/test/inputs/json/misc/fcca3.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/fcca3.json/default/TopLevel.pmod
index bf63c46..a61b001 100644
--- a/base/pike/test/inputs/json/misc/fcca3.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/fcca3.json/default/TopLevel.pmod
@@ -309,6 +309,10 @@ enum TypeName {
     TEXT = "text",           // json: "text"
 }
 
+TypeName TypeName_from_JSON(mixed json) {
+    return json;
+}
+
 class Format {
     mixed|string align;           // json: "align"
     mixed|string no_commas;       // json: "noCommas"
diff --git a/base/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod
index 8bc9aad..39deb8e 100644
--- a/base/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod
@@ -329,6 +329,10 @@ enum PurpleKindString {
     PURPLE_OBJECT_LITERAL = "Object literal",  // json: "Object literal"
 }
 
+PurpleKindString PurpleKindString_from_JSON(mixed json) {
+    return json;
+}
+
 class PurpleSignature {
     PurpleComment|mixed comment;     // json: "comment"
     GetSignatureFlags   flags;       // json: "flags"
@@ -391,6 +395,10 @@ enum SignatureKindString {
     CONSTRUCTOR_SIGNATURE = "Constructor signature", // json: "Constructor signature"
 }
 
+SignatureKindString SignatureKindString_from_JSON(mixed json) {
+    return json;
+}
+
 class GetSignatureType {
     GetSignature|mixed declaration;  // json: "declaration"
     ElementType|mixed  element_type; // json: "elementType"
@@ -619,6 +627,10 @@ enum Name {
     MY_NUMBER = "MyNumber",   // json: "MyNumber"
 }
 
+Name Name_from_JSON(mixed json) {
+    return json;
+}
+
 enum TypeEnum {
     INTRINSIC = "intrinsic",          // json: "intrinsic"
     REFLECTION = "reflection",        // json: "reflection"
@@ -630,6 +642,10 @@ enum TypeEnum {
     STRING_LITERAL = "stringLiteral", // json: "stringLiteral"
 }
 
+TypeEnum TypeEnum_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyComment {
     string text; // json: "text"
 
@@ -712,6 +728,10 @@ enum FileName {
     VARIABLES_TS = "variables.ts",           // json: "variables.ts"
 }
 
+FileName FileName_from_JSON(mixed json) {
+    return json;
+}
+
 class GetSignatureComment {
     mixed|string returns;    // json: "returns"
     mixed|string short_text; // json: "shortText"
@@ -852,6 +872,10 @@ enum ParameterKindString {
     PARAMETER = "Parameter", // json: "Parameter"
 }
 
+ParameterKindString ParameterKindString_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyType {
     ElementType|mixed        element_type;   // json: "elementType"
     Name|mixed               name;           // json: "name"
@@ -1656,6 +1680,10 @@ enum FluffyKindString {
     TYPE_ALIAS = "Type alias",                // json: "Type alias"
 }
 
+FluffyKindString FluffyKindString_from_JSON(mixed json) {
+    return json;
+}
+
 class StickySignature {
     StickyComment                   comment;        // json: "comment"
     IndigoFlags                     flags;          // json: "flags"
@@ -2217,3 +2245,7 @@ IndecentComment IndecentComment_from_JSON(mixed json) {
 enum TentacledKindString {
     EXTERNAL_MODULE = "External module", // json: "External module"
 }
+
+TentacledKindString TentacledKindString_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod
index 59f82a3..ce8846c 100644
--- a/base/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod
@@ -99,20 +99,36 @@ enum Breed {
     NANO = "Nano",       // json: "Nano"
 }
 
+Breed Breed_from_JSON(mixed json) {
+    return json;
+}
+
 enum Firstname {
     FIRSTNAME = "", // json: ""
     CHI = "Chi",    // json: "Chi"
 }
 
+Firstname Firstname_from_JSON(mixed json) {
+    return json;
+}
+
 enum Lastname {
     LASTNAME = "",     // json: ""
     WASHKO = "Washko", // json: "Washko"
 }
 
+Lastname Lastname_from_JSON(mixed json) {
+    return json;
+}
+
 enum Pvptitle {
     FRESHMAN = "Freshman", // json: "Freshman"
 }
 
+Pvptitle Pvptitle_from_JSON(mixed json) {
+    return json;
+}
+
 enum RankTitle {
     PRESIDENT = "President", // json: "President"
     ADVISOR = "Advisor",     // json: "Advisor"
@@ -120,12 +136,20 @@ enum RankTitle {
     APPLICANT = "Applicant", // json: "Applicant"
 }
 
+RankTitle RankTitle_from_JSON(mixed json) {
+    return json;
+}
+
 enum Sex {
     NEUTER = "Neuter", // json: "Neuter"
     MALE = "Male",     // json: "Male"
     FEMALE = "Female", // json: "Female"
 }
 
+Sex Sex_from_JSON(mixed json) {
+    return json;
+}
+
 class FluffyTopLevel {
     int    adventurercount; // json: "ADVENTURERCOUNT"
     int    agentcount;      // json: "AGENTCOUNT"
diff --git a/base/pike/test/inputs/json/priority/combined-enum.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/combined-enum.json/default/TopLevel.pmod
index 5b9411e..8febd7f 100644
--- a/base/pike/test/inputs/json/priority/combined-enum.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/combined-enum.json/default/TopLevel.pmod
@@ -60,3 +60,7 @@ enum X {
     ONE = "one",     // json: "one"
     TWO = "two",     // json: "two"
 }
+
+X X_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.pmod
index 10fabf6..cdd6ee7 100644
--- a/base/pike/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/TopLevel.pmod
@@ -42,3 +42,7 @@ enum Category {
     EMPTY = " ",   // json: " "
     CATEGORY = "", // json: ""
 }
+
+Category Category_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod
index 265975d..f300593 100644
--- a/base/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod
@@ -103,6 +103,10 @@ enum LeaddatumEnum {
     P4 = "P4",      // json: "P4"
 }
 
+LeaddatumEnum LeaddatumEnum_from_JSON(mixed json) {
+    return json;
+}
+
 class Othermatch {
     string  clock;            // json: "clock"
     string  competition_name; // json: "competitionName"
@@ -157,6 +161,10 @@ enum PerType {
     REGULAR = "REGULAR", // json: "REGULAR"
 }
 
+PerType PerType_from_JSON(mixed json) {
+    return json;
+}
+
 class Team {
     string team_code;               // json: "teamCode"
     string team_code_international; // json: "teamCodeInternational"
@@ -293,6 +301,10 @@ enum ActionType {
     JUMPBALL = "jumpball",         // json: "jumpball"
 }
 
+ActionType ActionType_from_JSON(mixed json) {
+    return json;
+}
+
 enum FamilyNameInitial {
     FAMILY_NAME_INITIAL_R = "R", // json: "R"
     M = "M",                     // json: "M"
@@ -310,6 +322,10 @@ enum FamilyNameInitial {
     FAMILY_NAME_INITIAL_B = "B", // json: "B"
 }
 
+FamilyNameInitial FamilyNameInitial_from_JSON(mixed json) {
+    return json;
+}
+
 enum FirstNameInitial {
     D = "D",                    // json: "D"
     FIRST_NAME_INITIAL_J = "J", // json: "J"
@@ -325,6 +341,10 @@ enum FirstNameInitial {
     N = "N",                    // json: "N"
 }
 
+FirstNameInitial FirstNameInitial_from_JSON(mixed json) {
+    return json;
+}
+
 enum ScoreboardName {
     SCOREBOARD_NAME = "",         // json: ""
     T_S = "T. s",                 // json: "T. s"
@@ -333,6 +353,10 @@ enum ScoreboardName {
     B_VALENTINE = "B. Valentine", // json: "B. Valentine"
 }
 
+ScoreboardName ScoreboardName_from_JSON(mixed json) {
+    return json;
+}
+
 class Scorer {
     mixed|string            family_name;                       // json: "familyName"
     FamilyNameInitial|mixed family_name_initial;               // json: "familyNameInitial"
@@ -961,6 +985,10 @@ enum SubType {
     DUNK = "dunk",         // json: "dunk"
 }
 
+SubType SubType_from_JSON(mixed json) {
+    return json;
+}
+
 class Totallds {
     mapping(string:Scorer) s_assists;        // json: "sAssists"
     mapping(string:Scorer) s_blocks;         // json: "sBlocks"
diff --git a/base/pike/test/inputs/json/samples/github-events.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/github-events.json/default/TopLevel.pmod
index 832c3c4..06ee3a6 100644
--- a/base/pike/test/inputs/json/samples/github-events.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/github-events.json/default/TopLevel.pmod
@@ -273,6 +273,10 @@ enum Type {
     ORGANIZATION = "Organization", // json: "Organization"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 class Commit {
     Author author;   // json: "author"
     bool   distinct; // json: "distinct"
diff --git a/base/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod
index 3f6d4a5..0b6faa0 100644
--- a/base/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod
@@ -108,6 +108,10 @@ enum Egg {
     OMANYTE_CANDY = "Omanyte Candy", // json: "Omanyte Candy"
 }
 
+Egg Egg_from_JSON(mixed json) {
+    return json;
+}
+
 class Evolution {
     string name; // json: "name"
     string num;  // json: "num"
@@ -151,3 +155,7 @@ enum Type {
     DRAGON = "Dragon",     // json: "Dragon"
     NORMAL = "Normal",     // json: "Normal"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/samples/reddit.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/reddit.json/default/TopLevel.pmod
index f766bc4..7fe32d9 100644
--- a/base/pike/test/inputs/json/samples/reddit.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/reddit.json/default/TopLevel.pmod
@@ -309,6 +309,10 @@ enum Domain {
     I_REDD_IT = "i.redd.it",     // json: "i.redd.it"
 }
 
+Domain Domain_from_JSON(mixed json) {
+    return json;
+}
+
 class MediaEmbed {
 
     string encode_json() {
@@ -329,11 +333,19 @@ enum WhitelistStatus {
     ALL_ADS = "all_ads", // json: "all_ads"
 }
 
+WhitelistStatus WhitelistStatus_from_JSON(mixed json) {
+    return json;
+}
+
 enum PostHint {
     LINK = "link",   // json: "link"
     IMAGE = "image", // json: "image"
 }
 
+PostHint PostHint_from_JSON(mixed json) {
+    return json;
+}
+
 class Preview {
     bool         enabled; // json: "enabled"
     array(Image) images;  // json: "images"
@@ -462,18 +474,38 @@ enum Subreddit {
     FUNNY = "funny", // json: "funny"
 }
 
+Subreddit Subreddit_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditId {
     T5_2_QH33 = "t5_2qh33", // json: "t5_2qh33"
 }
 
+SubredditId SubredditId_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditNamePrefixed {
     R_FUNNY = "r/funny", // json: "r/funny"
 }
 
+SubredditNamePrefixed SubredditNamePrefixed_from_JSON(mixed json) {
+    return json;
+}
+
 enum SubredditType {
     PUBLIC = "public", // json: "public"
 }
 
+SubredditType SubredditType_from_JSON(mixed json) {
+    return json;
+}
+
 enum Kind {
     T3 = "t3", // json: "t3"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/pike/test/inputs/json/samples/us-senators.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/us-senators.json/default/TopLevel.pmod
index 8361b27..0d6ef98 100644
--- a/base/pike/test/inputs/json/samples/us-senators.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/us-senators.json/default/TopLevel.pmod
@@ -150,6 +150,10 @@ enum Party {
     INDEPENDENT = "Independent", // json: "Independent"
 }
 
+Party Party_from_JSON(mixed json) {
+    return json;
+}
+
 class Extra {
     string       address;      // json: "address"
     string       contact_form; // json: "contact_form"
@@ -255,47 +259,87 @@ enum Gender {
     MALE = "male",     // json: "male"
 }
 
+Gender Gender_from_JSON(mixed json) {
+    return json;
+}
+
 enum GenderLabel {
     GENDER_LABEL_FEMALE = "Female", // json: "Female"
     GENDER_LABEL_MALE = "Male",     // json: "Male"
 }
 
+GenderLabel GenderLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum Namemod {
     EMPTY = "",  // json: ""
     JR = "Jr.",  // json: "Jr."
     III = "III", // json: "III"
 }
 
+Namemod Namemod_from_JSON(mixed json) {
+    return json;
+}
+
 enum RoleType {
     SENATOR = "senator", // json: "senator"
 }
 
+RoleType RoleType_from_JSON(mixed json) {
+    return json;
+}
+
 enum RoleTypeLabel {
     ROLE_TYPE_LABEL_SENATOR = "Senator", // json: "Senator"
 }
 
+RoleTypeLabel RoleTypeLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorClass {
     CLASS1 = "class1", // json: "class1"
     CLASS2 = "class2", // json: "class2"
     CLASS3 = "class3", // json: "class3"
 }
 
+SenatorClass SenatorClass_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorClassLabel {
     CLASS_1 = "Class 1", // json: "Class 1"
     CLASS_2 = "Class 2", // json: "Class 2"
     CLASS_3 = "Class 3", // json: "Class 3"
 }
 
+SenatorClassLabel SenatorClassLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorRank {
     JUNIOR = "junior", // json: "junior"
     SENIOR = "senior", // json: "senior"
 }
 
+SenatorRank SenatorRank_from_JSON(mixed json) {
+    return json;
+}
+
 enum SenatorRankLabel {
     SENATOR_RANK_LABEL_JUNIOR = "Junior", // json: "Junior"
     SENATOR_RANK_LABEL_SENIOR = "Senior", // json: "Senior"
 }
 
+SenatorRankLabel SenatorRankLabel_from_JSON(mixed json) {
+    return json;
+}
+
 enum Title {
     SEN = "Sen.", // json: "Sen."
 }
+
+Title Title_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/accessors.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/accessors.schema/default/TopLevel.pmod
index bec650a..78c1665 100644
--- a/base/schema-pike/test/inputs/schema/accessors.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/accessors.schema/default/TopLevel.pmod
@@ -47,6 +47,10 @@ enum Enum {
     BLUE = "blue",   // json: "blue"
 }
 
+Enum Enum_from_JSON(mixed json) {
+    return json;
+}
+
 typedef float|bool Union;
 
 Union Union_from_JSON(mixed json) {
diff --git a/base/schema-pike/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.pmod
index 3ca72a5..8176560 100644
--- a/base/schema-pike/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/all-of-additional-properties-false.schema/default/TopLevel.pmod
@@ -47,7 +47,15 @@ enum Frequency {
     ANNUALLY = "Annually", // json: "Annually"
 }
 
+Frequency Frequency_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     GROSS_SALARY_AMOUNT = "GrossSalaryAmount", // json: "GrossSalaryAmount"
     OVERTIME = "Overtime",                     // json: "Overtime"
 }
+
+Type Type_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.pmod
index 5d15231..a185f38 100644
--- a/base/schema-pike/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/TopLevel.pmod
@@ -35,3 +35,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 enum Kind {
     OK = "ok", // json: "ok"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.pmod
index 5d15231..a185f38 100644
--- a/base/schema-pike/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/comment-injection-enum.schema/default/TopLevel.pmod
@@ -35,3 +35,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 enum Kind {
     OK = "ok", // json: "ok"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/const-non-string.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/const-non-string.schema/default/TopLevel.pmod
index 64b8174..cc8a42c 100644
--- a/base/schema-pike/test/inputs/schema/const-non-string.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/const-non-string.schema/default/TopLevel.pmod
@@ -47,3 +47,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 enum Kind {
     WIDGET = "widget", // json: "widget"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/description.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/description.schema/default/TopLevel.pmod
index ee3f05e..3fad001 100644
--- a/base/schema-pike/test/inputs/schema/description.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/description.schema/default/TopLevel.pmod
@@ -77,6 +77,10 @@ enum Enum {
     BAR = "bar", // json: "bar"
 }
 
+Enum Enum_from_JSON(mixed json) {
+    return json;
+}
+
 // Either a number or a string
 typedef float|string Union;
 
diff --git a/base/schema-pike/test/inputs/schema/enum-large.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/enum-large.schema/default/TopLevel.pmod
index f23c38e..0237504 100644
--- a/base/schema-pike/test/inputs/schema/enum-large.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/enum-large.schema/default/TopLevel.pmod
@@ -58,8 +58,16 @@ enum Callsign {
     TANGO = "tango",       // json: "tango"
 }
 
+Callsign Callsign_from_JSON(mixed json) {
+    return json;
+}
+
 enum Priority {
     LOW = "low",       // json: "low"
     MEDIUM = "medium", // json: "medium"
     HIGH = "high",     // json: "high"
 }
+
+Priority Priority_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/enum-with-null.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/enum-with-null.schema/default/TopLevel.pmod
index 67e29c1..2e854fc 100644
--- a/base/schema-pike/test/inputs/schema/enum-with-null.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/enum-with-null.schema/default/TopLevel.pmod
@@ -36,3 +36,7 @@ enum Enum {
     FOO = "foo", // json: "foo"
     BAR = "bar", // json: "bar"
 }
+
+Enum Enum_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/enum-with-values.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/enum-with-values.schema/default/TopLevel.pmod
index ce7a3bc..55804b6 100644
--- a/base/schema-pike/test/inputs/schema/enum-with-values.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/enum-with-values.schema/default/TopLevel.pmod
@@ -41,3 +41,7 @@ enum Weekdays {
     SATURDAY = "Saturday",   // json: "Saturday"
     SUNDAY = "Sunday",       // json: "Sunday"
 }
+
+Weekdays Weekdays_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/enum.schema/default/TopLevel.pmod
index 41ef5a0..507659d 100644
--- a/base/schema-pike/test/inputs/schema/enum.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/enum.schema/default/TopLevel.pmod
@@ -56,14 +56,26 @@ enum OtherArr {
     IF = "if",   // json: "if"
 }
 
+OtherArr OtherArr_from_JSON(mixed json) {
+    return json;
+}
+
 enum Gve {
     GOOD = "good",           // json: "good"
     GVE_NEUTRAL = "neutral", // json: "neutral"
     EVIL = "evil",           // json: "evil"
 }
 
+Gve Gve_from_JSON(mixed json) {
+    return json;
+}
+
 enum Lvc {
     LAWFUL = "lawful",       // json: "lawful"
     LVC_NEUTRAL = "neutral", // json: "neutral"
     CHAOTIC = "chaotic",     // json: "chaotic"
 }
+
+Lvc Lvc_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.pmod
index 87425c3..f01dca8 100644
--- a/base/schema-pike/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/haskell-enum-forbidden.schema/default/TopLevel.pmod
@@ -36,3 +36,7 @@ enum Health {
     OK = "ok",       // json: "ok"
     ERROR = "error", // json: "error"
 }
+
+Health Health_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod
index 1bcf295..8bcd941 100644
--- a/base/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod
@@ -311,3 +311,7 @@ enum Enum {
     YIELD = "yield",                                           // json: "yield"
     DUMMY = "dummy",                                           // json: "dummy"
 }
+
+Enum Enum_from_JSON(mixed json) {
+    return json;
+}
diff --git a/head/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod
new file mode 100644
index 0000000..e5a044d
--- /dev/null
+++ b/head/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod
@@ -0,0 +1,6933 @@
+// 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 {
+    UnionUnion                    empty;                      // json: "_"
+    UnionBoolUnion                top_level_bool;             // json: "_Bool"
+    UnionComplex                  complex;                    // json: "_Complex"
+    UnionImaginery                imaginery;                  // json: "_Imaginery"
+    UnionAbstract                 abstract;                   // json: "abstract"
+    UnionAlignas                  alignas;                    // json: "alignas"
+    UnionAlignof                  alignof;                    // json: "alignof"
+    UnionAnd                      and;                        // json: "and"
+    UnionAndEq                    and_eq;                     // json: "and_eq"
+    UnionAnyUnion                 top_level_any;              // json: "any"
+    UnionAny                      any;                        // json: "Any"
+    UnionArray                    top_level_array;            // json: "array"
+    UnionAs                       as;                         // json: "as"
+    UnionAsm                      asm;                        // json: "asm"
+    UnionAssert                   assert;                     // json: "assert"
+    UnionAssociatedtype           associatedtype;             // json: "associatedtype"
+    UnionAssociativity            associativity;              // json: "associativity"
+    UnionAsync                    async;                      // json: "async"
+    UnionAtomic                   atomic;                     // json: "atomic"
+    UnionAtomicCancel             atomic_cancel;              // json: "atomic_cancel"
+    UnionAtomicCommit             atomic_commit;              // json: "atomic_commit"
+    UnionAtomicNoexcept           atomic_noexcept;            // json: "atomic_noexcept"
+    UnionAuto                     top_level_auto;             // json: "auto"
+    UnionAwait                    await;                      // json: "await"
+    UnionBase                     base;                       // json: "base"
+    UnionBitand                   bitand;                     // json: "bitand"
+    UnionBitor                    bitor;                      // json: "bitor"
+    UnionBool                     bool;                       // json: "BOOL"
+    TopLevelUnionBool             purple_bool;                // json: "bool"
+    UnionBoolean                  boolean;                    // json: "boolean"
+    UnionBreak                    top_level_break;            // json: "break"
+    UnionBycopy                   bycopy;                     // json: "bycopy"
+    UnionByref                    byref;                      // json: "byref"
+    UnionByte                     byte;                       // json: "byte"
+    UnionCase                     top_level_case;             // json: "case"
+    UnionCatch                    top_level_catch;            // json: "catch"
+    UnionChan                     chan;                       // json: "chan"
+    UnionChar                     char;                       // json: "char"
+    UnionChar16T                  char16_t;                   // json: "char16_t"
+    UnionChar32T                  char32_t;                   // json: "char32_t"
+    UnionChecked                  checked;                    // json: "checked"
+    UnionClassUnion               purple_class;               // json: "class"
+    UnionClass                    top_level_class;            // json: "Class"
+    UnionCoAwait                  co_await;                   // json: "co_await"
+    UnionCoReturn                 co_return;                  // json: "co_return"
+    UnionCoYield                  co_yield;                   // json: "co_yield"
+    UnionCompl                    compl;                      // json: "compl"
+    UnionConcept                  concept;                    // json: "concept"
+    UnionConsole                  console;                    // json: "console"
+    UnionConst                    top_level_const;            // json: "const"
+    UnionConstCast                const_cast;                 // json: "const_cast"
+    UnionConstexpr                constexpr;                  // json: "constexpr"
+    UnionConstructor              constructor;                // json: "constructor"
+    UnionContinue                 top_level_continue;         // json: "continue"
+    UnionConvenience              convenience;                // json: "convenience"
+    UnionConvert                  convert;                    // json: "convert"
+    UnionConverter                converter;                  // json: "converter"
+    UnionDate                     date;                       // json: "date"
+    UnionDateParseHandling        date_parse_handling;        // json: "date_parse_handling"
+    UnionDebugger                 debugger;                   // json: "debugger"
+    UnionDecimal                  decimal;                    // json: "decimal"
+    UnionDeclare                  declare;                    // json: "declare"
+    UnionDecltype                 decltype;                   // json: "decltype"
+    UnionDecodeString             decode_string;              // json: "decode_string"
+    UnionDef                      def;                        // json: "def"
+    UnionDefault                  top_level_default;          // json: "default"
+    UnionDefer                    defer;                      // json: "defer"
+    UnionDeinit                   deinit;                     // json: "deinit"
+    UnionDel                      del;                        // json: "del"
+    UnionDelegate                 delegate;                   // json: "delegate"
+    UnionDelete                   delete;                     // json: "delete"
+    UnionDict                     dict;                       // json: "dict"
+    UnionDictionary               dictionary;                 // json: "dictionary"
+    UnionDidSet                   did_set;                    // json: "didSet"
+    UnionDo                       top_level_do;               // json: "do"
+    UnionDouble                   double;                     // json: "double"
+    float|mixed                   dummy;                      // json: "dummy"
+    UnionDynamic                  dynamic;                    // json: "dynamic"
+    UnionDynamicCast              dynamic_cast;               // json: "dynamic_cast"
+    UnionElif                     elif;                       // json: "elif"
+    UnionElse                     top_level_else;             // json: "else"
+    UnionEncodeQuickType          encode_quick_type;          // json: "encode_quick_type"
+    UnionEnum                     top_level_enum;             // json: "enum"
+    UnionEvent                    event;                      // json: "event"
+    UnionExcept                   except;                     // json: "except"
+    UnionException                exception;                  // json: "exception"
+    UnionExplicit                 explicit;                   // json: "explicit"
+    UnionExport                   export;                     // json: "export"
+    UnionExposing                 exposing;                   // json: "exposing"
+    UnionExtends                  extends;                    // json: "extends"
+    UnionExtension                extension;                  // json: "extension"
+    UnionExtern                   top_level_extern;           // json: "extern"
+    UnionFallthrough              fallthrough;                // json: "fallthrough"
+    UnionFalseUnion               top_level_false;            // json: "false"
+    UnionFalse                    false;                      // json: "False"
+    UnionFileprivate              fileprivate;                // json: "fileprivate"
+    UnionFinal                    top_level_final;            // json: "final"
+    UnionFinally                  finally;                    // json: "finally"
+    UnionFixed                    fixed;                      // json: "fixed"
+    UnionFloat                    top_level_float;            // json: "float"
+    UnionFor                      top_level_for;              // json: "for"
+    UnionForeach                  top_level_foreach;          // json: "foreach"
+    UnionFriend                   friend;                     // json: "friend"
+    UnionFrom                     from;                       // json: "from"
+    UnionFromJson                 from_json;                  // json: "from_json"
+    UnionFunc                     func;                       // json: "func"
+    UnionFunction                 top_level_function;         // json: "function"
+    UnionGet                      get;                        // json: "get"
+    UnionGlobal                   top_level_global;           // json: "global"
+    UnionGo                       go;                         // json: "go"
+    UnionGoto                     goto;                       // json: "goto"
+    UnionGuard                    guard;                      // json: "guard"
+    UnionHasOwnProperty           has_own_property;           // json: "hasOwnProperty"
+    UnionId                       id;                         // json: "id"
+    UnionIf                       top_level_if;               // json: "if"
+    UnionImp                      imp;                        // json: "IMP"
+    UnionImplements               implements;                 // json: "implements"
+    UnionImplicit                 implicit;                   // json: "implicit"
+    UnionImport                   top_level_import;           // json: "import"
+    UnionIn                       in;                         // json: "in"
+    UnionIndirect                 indirect;                   // json: "indirect"
+    UnionInfix                    infix;                      // json: "infix"
+    UnionInit                     init;                       // json: "init"
+    UnionInline                   top_level_inline;           // json: "inline"
+    UnionInout                    inout;                      // json: "inout"
+    UnionInstanceof               instanceof;                 // json: "instanceof"
+    UnionInt                      top_level_int;              // json: "int"
+    UnionInterface                interface;                  // json: "interface"
+    UnionInternal                 internal;                   // json: "internal"
+    UnionIs                       is;                         // json: "is"
+    UnionIterable                 iterable;                   // json: "iterable"
+    UnionJdec                     jdec;                       // json: "jdec"
+    UnionJenc                     jenc;                       // json: "jenc"
+    UnionJpipe                    jpipe;                      // json: "jpipe"
+    UnionJson                     json;                       // json: "json"
+    UnionJsonConverter            json_converter;             // json: "json_converter"
+    UnionJsonSerializer           json_serializer;            // json: "json_serializer"
+    UnionJsonToken                json_token;                 // json: "json_token"
+    UnionJsonWriter               json_writer;                // json: "json_writer"
+    UnionLambda                   top_level_lambda;           // json: "lambda"
+    UnionLazy                     lazy;                       // json: "lazy"
+    UnionLeft                     left;                       // json: "left"
+    UnionLet                      let;                        // json: "let"
+    UnionList                     list;                       // json: "list"
+    UnionLock                     lock;                       // json: "lock"
+    UnionLong                     long;                       // json: "long"
+    UnionMap                      map;                        // json: "map"
+    UnionMetadataPropertyHandling metadata_property_handling; // json: "metadata_property_handling"
+    UnionModule                   module;                     // json: "module"
+    UnionMutable                  mutable;                    // json: "mutable"
+    UnionMutating                 mutating;                   // json: "mutating"
+    UnionNamespace                namespace;                  // json: "namespace"
+    UnionNative                   native;                     // json: "native"
+    UnionNew                      new;                        // json: "new"
+    UnionNewtonsoft               newtonsoft;                 // json: "newtonsoft"
+    UnionNil                      nil;                        // json: "nil"
+    UnionNo                       no;                         // json: "NO"
+    UnionNoexcept                 noexcept;                   // json: "noexcept"
+    UnionNonatomic                nonatomic;                  // json: "nonatomic"
+    UnionNoneUnion                top_level_none;             // json: "none"
+    UnionNone                     none;                       // json: "None"
+    UnionNonlocal                 nonlocal;                   // json: "nonlocal"
+    UnionNonmutating              nonmutating;                // json: "nonmutating"
+    UnionNot                      not;                        // json: "not"
+    UnionNotEq                    not_eq;                     // json: "not_eq"
+    UnionNsString                 ns_string;                  // json: "NSString"
+    UnionNull                     null;                       // json: "NULL"
+    UnionNullUnion                top_level_null;             // json: "null"
+    UnionNullptr                  nullptr;                    // json: "nullptr"
+    UnionNumber                   number;                     // json: "number"
+    UnionObject                   top_level_object;           // json: "object"
+    UnionOf                       of;                         // json: "of"
+    UnionOneway                   oneway;                     // json: "oneway"
+    UnionOpen                     open;                       // json: "open"
+    UnionOperator                 operator;                   // json: "operator"
+    UnionOptional                 top_level_optional;         // json: "optional"
+    UnionOr                       or;                         // json: "or"
+    UnionOrEq                     or_eq;                      // json: "or_eq"
+    UnionOut                      out;                        // json: "out"
+    UnionOverride                 override;                   // json: "override"
+    UnionPackage                  package;                    // json: "package"
+    UnionParams                   params;                     // json: "params"
+    UnionPass                     pass;                       // json: "pass"
+    UnionPort                     port;                       // json: "port"
+    UnionPostfix                  postfix;                    // json: "postfix"
+    UnionPrecedence               precedence;                 // json: "precedence"
+    UnionPrefix                   prefix;                     // json: "prefix"
+    UnionPrint                    print;                      // json: "print"
+    UnionPrintf                   printf;                     // json: "printf"
+    UnionPrivate                  top_level_private;          // json: "private"
+    UnionProtected                top_level_protected;        // json: "protected"
+    UnionProtocol                 protocol;                   // json: "Protocol"
+    UnionProtocolUnion            top_level_protocol;         // json: "protocol"
+    UnionPublic                   top_level_public;           // json: "public"
+    UnionQuicktype                quicktype;                  // json: "quicktype"
+    UnionRaise                    raise;                      // json: "raise"
+    UnionRange                    range;                      // json: "range"
+    UnionReadonly                 readonly;                   // json: "readonly"
+    UnionRef                      ref;                        // json: "ref"
+    UnionRegister                 register;                   // json: "register"
+    UnionReinterpretCast          reinterpret_cast;           // json: "reinterpret_cast"
+    UnionRepeat                   repeat;                     // json: "repeat"
+    UnionRequire                  require;                    // json: "require"
+    UnionRequired                 required;                   // json: "required"
+    UnionRequires                 requires;                   // json: "requires"
+    UnionRestrict                 restrict;                   // json: "restrict"
+    UnionRetain                   retain;                     // json: "retain"
+    UnionRethrows                 rethrows;                   // json: "rethrows"
+    UnionReturn                   top_level_return;           // json: "return"
+    UnionRight                    right;                      // json: "right"
+    UnionSbyte                    sbyte;                      // json: "sbyte"
+    UnionSealed                   sealed;                     // json: "sealed"
+    UnionSel                      sel;                        // json: "SEL"
+    UnionSelect                   select;                     // json: "select"
+    UnionSelf                     self;                       // json: "Self"
+    UnionSelfUnion                top_level_self;             // json: "self"
+    UnionSerialize                serialize;                  // json: "serialize"
+    UnionSet                      set;                        // json: "set"
+    UnionShort                    short;                      // json: "short"
+    UnionSigned                   signed;                     // json: "signed"
+    UnionSizeof                   sizeof;                     // json: "sizeof"
+    UnionStackalloc               stackalloc;                 // json: "stackalloc"
+    UnionStatic                   top_level_static;           // json: "static"
+    UnionStaticAssert             static_assert;              // json: "static_assert"
+    UnionStaticCast               static_cast;                // json: "static_cast"
+    UnionStrictfp                 strictfp;                   // json: "strictfp"
+    UnionString                   top_level_string;           // json: "string"
+    UnionStruct                   struct;                     // json: "struct"
+    UnionSubscript                subscript;                  // json: "subscript"
+    UnionSuper                    super;                      // json: "super"
+    UnionSwitch                   top_level_switch;           // json: "switch"
+    UnionSymbol                   symbol;                     // json: "symbol"
+    UnionSynchronized             synchronized;               // json: "synchronized"
+    UnionSystem                   system;                     // json: "system"
+    UnionTemplate                 template;                   // json: "template"
+    UnionThen                     then;                       // json: "then"
+    UnionThis                     this;                       // json: "this"
+    UnionThreadLocal              thread_local;               // json: "thread_local"
+    UnionThrow                    throw;                      // json: "throw"
+    UnionThrows                   throws;                     // json: "throws"
+    UnionToJson                   to_json;                    // json: "to_json"
+    UnionTopLevel                 top_level;                  // json: "top_level"
+    UnionTransient                transient;                  // json: "transient"
+    UnionTrue                     true;                       // json: "True"
+    UnionTrueUnion                top_level_true;             // json: "true"
+    UnionTry                      try;                        // json: "try"
+    UnionType                     type;                       // json: "Type"
+    UnionTypeUnion                top_level_type;             // json: "type"
+    UnionTypealias                typealias;                  // json: "typealias"
+    UnionTypedef                  top_level_typedef;          // json: "typedef"
+    UnionTypeid                   typeid;                     // json: "typeid"
+    UnionTypename                 typename;                   // json: "typename"
+    UnionTypeof                   top_level_typeof;           // json: "typeof"
+    UnionUint                     uint;                       // json: "uint"
+    UnionUlong                    ulong;                      // json: "ulong"
+    UnionUnchecked                unchecked;                  // json: "unchecked"
+    UnionUndefined                undefined;                  // json: "undefined"
+    UnionUnionUnion               union;                      // json: "union"
+    UnionUnowned                  unowned;                    // json: "unowned"
+    UnionUnsafe                   unsafe;                     // json: "unsafe"
+    UnionUnsigned                 unsigned;                   // json: "unsigned"
+    UnionUshort                   ushort;                     // json: "ushort"
+    UnionUsing                    using;                      // json: "using"
+    UnionVar                      var;                        // json: "var"
+    UnionVirtual                  virtual;                    // json: "virtual"
+    UnionVoid                     top_level_void;             // json: "void"
+    UnionVolatile                 volatile;                   // json: "volatile"
+    UnionWcharT                   wchar_t;                    // json: "wchar_t"
+    UnionWeak                     weak;                       // json: "weak"
+    UnionWhere                    where;                      // json: "where"
+    UnionWhile                    top_level_while;            // json: "while"
+    UnionWillSet                  will_set;                   // json: "willSet"
+    UnionWith                     with;                       // json: "with"
+    UnionXor                      xor;                        // json: "xor"
+    UnionXorEq                    xor_eq;                     // json: "xor_eq"
+    UnionYes                      yes;                        // json: "YES"
+    UnionYield                    yield;                      // json: "yield"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "_" : empty,
+            "_Bool" : top_level_bool,
+            "_Complex" : complex,
+            "_Imaginery" : imaginery,
+            "abstract" : abstract,
+            "alignas" : alignas,
+            "alignof" : alignof,
+            "and" : and,
+            "and_eq" : and_eq,
+            "any" : top_level_any,
+            "Any" : any,
+            "array" : top_level_array,
+            "as" : as,
+            "asm" : asm,
+            "assert" : assert,
+            "associatedtype" : associatedtype,
+            "associativity" : associativity,
+            "async" : async,
+            "atomic" : atomic,
+            "atomic_cancel" : atomic_cancel,
+            "atomic_commit" : atomic_commit,
+            "atomic_noexcept" : atomic_noexcept,
+            "auto" : top_level_auto,
+            "await" : await,
+            "base" : base,
+            "bitand" : bitand,
+            "bitor" : bitor,
+            "BOOL" : bool,
+            "bool" : purple_bool,
+            "boolean" : boolean,
+            "break" : top_level_break,
+            "bycopy" : bycopy,
+            "byref" : byref,
+            "byte" : byte,
+            "case" : top_level_case,
+            "catch" : top_level_catch,
+            "chan" : chan,
+            "char" : char,
+            "char16_t" : char16_t,
+            "char32_t" : char32_t,
+            "checked" : checked,
+            "class" : purple_class,
+            "Class" : top_level_class,
+            "co_await" : co_await,
+            "co_return" : co_return,
+            "co_yield" : co_yield,
+            "compl" : compl,
+            "concept" : concept,
+            "console" : console,
+            "const" : top_level_const,
+            "const_cast" : const_cast,
+            "constexpr" : constexpr,
+            "constructor" : constructor,
+            "continue" : top_level_continue,
+            "convenience" : convenience,
+            "convert" : convert,
+            "converter" : converter,
+            "date" : date,
+            "date_parse_handling" : date_parse_handling,
+            "debugger" : debugger,
+            "decimal" : decimal,
+            "declare" : declare,
+            "decltype" : decltype,
+            "decode_string" : decode_string,
+            "def" : def,
+            "default" : top_level_default,
+            "defer" : defer,
+            "deinit" : deinit,
+            "del" : del,
+            "delegate" : delegate,
+            "delete" : delete,
+            "dict" : dict,
+            "dictionary" : dictionary,
+            "didSet" : did_set,
+            "do" : top_level_do,
+            "double" : double,
+            "dummy" : dummy,
+            "dynamic" : dynamic,
+            "dynamic_cast" : dynamic_cast,
+            "elif" : elif,
+            "else" : top_level_else,
+            "encode_quick_type" : encode_quick_type,
+            "enum" : top_level_enum,
+            "event" : event,
+            "except" : except,
+            "exception" : exception,
+            "explicit" : explicit,
+            "export" : export,
+            "exposing" : exposing,
+            "extends" : extends,
+            "extension" : extension,
+            "extern" : top_level_extern,
+            "fallthrough" : fallthrough,
+            "false" : top_level_false,
+            "False" : false,
+            "fileprivate" : fileprivate,
+            "final" : top_level_final,
+            "finally" : finally,
+            "fixed" : fixed,
+            "float" : top_level_float,
+            "for" : top_level_for,
+            "foreach" : top_level_foreach,
+            "friend" : friend,
+            "from" : from,
+            "from_json" : from_json,
+            "func" : func,
+            "function" : top_level_function,
+            "get" : get,
+            "global" : top_level_global,
+            "go" : go,
+            "goto" : goto,
+            "guard" : guard,
+            "hasOwnProperty" : has_own_property,
+            "id" : id,
+            "if" : top_level_if,
+            "IMP" : imp,
+            "implements" : implements,
+            "implicit" : implicit,
+            "import" : top_level_import,
+            "in" : in,
+            "indirect" : indirect,
+            "infix" : infix,
+            "init" : init,
+            "inline" : top_level_inline,
+            "inout" : inout,
+            "instanceof" : instanceof,
+            "int" : top_level_int,
+            "interface" : interface,
+            "internal" : internal,
+            "is" : is,
+            "iterable" : iterable,
+            "jdec" : jdec,
+            "jenc" : jenc,
+            "jpipe" : jpipe,
+            "json" : json,
+            "json_converter" : json_converter,
+            "json_serializer" : json_serializer,
+            "json_token" : json_token,
+            "json_writer" : json_writer,
+            "lambda" : top_level_lambda,
+            "lazy" : lazy,
+            "left" : left,
+            "let" : let,
+            "list" : list,
+            "lock" : lock,
+            "long" : long,
+            "map" : map,
+            "metadata_property_handling" : metadata_property_handling,
+            "module" : module,
+            "mutable" : mutable,
+            "mutating" : mutating,
+            "namespace" : namespace,
+            "native" : native,
+            "new" : new,
+            "newtonsoft" : newtonsoft,
+            "nil" : nil,
+            "NO" : no,
+            "noexcept" : noexcept,
+            "nonatomic" : nonatomic,
+            "none" : top_level_none,
+            "None" : none,
+            "nonlocal" : nonlocal,
+            "nonmutating" : nonmutating,
+            "not" : not,
+            "not_eq" : not_eq,
+            "NSString" : ns_string,
+            "NULL" : null,
+            "null" : top_level_null,
+            "nullptr" : nullptr,
+            "number" : number,
+            "object" : top_level_object,
+            "of" : of,
+            "oneway" : oneway,
+            "open" : open,
+            "operator" : operator,
+            "optional" : top_level_optional,
+            "or" : or,
+            "or_eq" : or_eq,
+            "out" : out,
+            "override" : override,
+            "package" : package,
+            "params" : params,
+            "pass" : pass,
+            "port" : port,
+            "postfix" : postfix,
+            "precedence" : precedence,
+            "prefix" : prefix,
+            "print" : print,
+            "printf" : printf,
+            "private" : top_level_private,
+            "protected" : top_level_protected,
+            "Protocol" : protocol,
+            "protocol" : top_level_protocol,
+            "public" : top_level_public,
+            "quicktype" : quicktype,
+            "raise" : raise,
+            "range" : range,
+            "readonly" : readonly,
+            "ref" : ref,
+            "register" : register,
+            "reinterpret_cast" : reinterpret_cast,
+            "repeat" : repeat,
+            "require" : require,
+            "required" : required,
+            "requires" : requires,
+            "restrict" : restrict,
+            "retain" : retain,
+            "rethrows" : rethrows,
+            "return" : top_level_return,
+            "right" : right,
+            "sbyte" : sbyte,
+            "sealed" : sealed,
+            "SEL" : sel,
+            "select" : select,
+            "Self" : self,
+            "self" : top_level_self,
+            "serialize" : serialize,
+            "set" : set,
+            "short" : short,
+            "signed" : signed,
+            "sizeof" : sizeof,
+            "stackalloc" : stackalloc,
+            "static" : top_level_static,
+            "static_assert" : static_assert,
+            "static_cast" : static_cast,
+            "strictfp" : strictfp,
+            "string" : top_level_string,
+            "struct" : struct,
+            "subscript" : subscript,
+            "super" : super,
+            "switch" : top_level_switch,
+            "symbol" : symbol,
+            "synchronized" : synchronized,
+            "system" : system,
+            "template" : template,
+            "then" : then,
+            "this" : this,
+            "thread_local" : thread_local,
+            "throw" : throw,
+            "throws" : throws,
+            "to_json" : to_json,
+            "top_level" : top_level,
+            "transient" : transient,
+            "True" : true,
+            "true" : top_level_true,
+            "try" : try,
+            "Type" : type,
+            "type" : top_level_type,
+            "typealias" : typealias,
+            "typedef" : top_level_typedef,
+            "typeid" : typeid,
+            "typename" : typename,
+            "typeof" : top_level_typeof,
+            "uint" : uint,
+            "ulong" : ulong,
+            "unchecked" : unchecked,
+            "undefined" : undefined,
+            "union" : union,
+            "unowned" : unowned,
+            "unsafe" : unsafe,
+            "unsigned" : unsigned,
+            "ushort" : ushort,
+            "using" : using,
+            "var" : var,
+            "virtual" : virtual,
+            "void" : top_level_void,
+            "volatile" : volatile,
+            "wchar_t" : wchar_t,
+            "weak" : weak,
+            "where" : where,
+            "while" : top_level_while,
+            "willSet" : will_set,
+            "with" : with,
+            "xor" : xor,
+            "xor_eq" : xor_eq,
+            "YES" : yes,
+            "yield" : yield,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TopLevel TopLevel_from_JSON(mixed json) {
+    TopLevel retval = TopLevel();
+
+    retval.empty = json["_"];
+    retval.top_level_bool = json["_Bool"];
+    retval.complex = json["_Complex"];
+    retval.imaginery = json["_Imaginery"];
+    retval.abstract = json["abstract"];
+    retval.alignas = json["alignas"];
+    retval.alignof = json["alignof"];
+    retval.and = json["and"];
+    retval.and_eq = json["and_eq"];
+    retval.top_level_any = json["any"];
+    retval.any = json["Any"];
+    retval.top_level_array = json["array"];
+    retval.as = json["as"];
+    retval.asm = json["asm"];
+    retval.assert = json["assert"];
+    retval.associatedtype = json["associatedtype"];
+    retval.associativity = json["associativity"];
+    retval.async = json["async"];
+    retval.atomic = json["atomic"];
+    retval.atomic_cancel = json["atomic_cancel"];
+    retval.atomic_commit = json["atomic_commit"];
+    retval.atomic_noexcept = json["atomic_noexcept"];
+    retval.top_level_auto = json["auto"];
+    retval.await = json["await"];
+    retval.base = json["base"];
+    retval.bitand = json["bitand"];
+    retval.bitor = json["bitor"];
+    retval.bool = json["BOOL"];
+    retval.purple_bool = json["bool"];
+    retval.boolean = json["boolean"];
+    retval.top_level_break = json["break"];
+    retval.bycopy = json["bycopy"];
+    retval.byref = json["byref"];
+    retval.byte = json["byte"];
+    retval.top_level_case = json["case"];
+    retval.top_level_catch = json["catch"];
+    retval.chan = json["chan"];
+    retval.char = json["char"];
+    retval.char16_t = json["char16_t"];
+    retval.char32_t = json["char32_t"];
+    retval.checked = json["checked"];
+    retval.purple_class = json["class"];
+    retval.top_level_class = json["Class"];
+    retval.co_await = json["co_await"];
+    retval.co_return = json["co_return"];
+    retval.co_yield = json["co_yield"];
+    retval.compl = json["compl"];
+    retval.concept = json["concept"];
+    retval.console = json["console"];
+    retval.top_level_const = json["const"];
+    retval.const_cast = json["const_cast"];
+    retval.constexpr = json["constexpr"];
+    retval.constructor = json["constructor"];
+    retval.top_level_continue = json["continue"];
+    retval.convenience = json["convenience"];
+    retval.convert = json["convert"];
+    retval.converter = json["converter"];
+    retval.date = json["date"];
+    retval.date_parse_handling = json["date_parse_handling"];
+    retval.debugger = json["debugger"];
+    retval.decimal = json["decimal"];
+    retval.declare = json["declare"];
+    retval.decltype = json["decltype"];
+    retval.decode_string = json["decode_string"];
+    retval.def = json["def"];
+    retval.top_level_default = json["default"];
+    retval.defer = json["defer"];
+    retval.deinit = json["deinit"];
+    retval.del = json["del"];
+    retval.delegate = json["delegate"];
+    retval.delete = json["delete"];
+    retval.dict = json["dict"];
+    retval.dictionary = json["dictionary"];
+    retval.did_set = json["didSet"];
+    retval.top_level_do = json["do"];
+    retval.double = json["double"];
+    retval.dummy = json["dummy"];
+    retval.dynamic = json["dynamic"];
+    retval.dynamic_cast = json["dynamic_cast"];
+    retval.elif = json["elif"];
+    retval.top_level_else = json["else"];
+    retval.encode_quick_type = json["encode_quick_type"];
+    retval.top_level_enum = json["enum"];
+    retval.event = json["event"];
+    retval.except = json["except"];
+    retval.exception = json["exception"];
+    retval.explicit = json["explicit"];
+    retval.export = json["export"];
+    retval.exposing = json["exposing"];
+    retval.extends = json["extends"];
+    retval.extension = json["extension"];
+    retval.top_level_extern = json["extern"];
+    retval.fallthrough = json["fallthrough"];
+    retval.top_level_false = json["false"];
+    retval.false = json["False"];
+    retval.fileprivate = json["fileprivate"];
+    retval.top_level_final = json["final"];
+    retval.finally = json["finally"];
+    retval.fixed = json["fixed"];
+    retval.top_level_float = json["float"];
+    retval.top_level_for = json["for"];
+    retval.top_level_foreach = json["foreach"];
+    retval.friend = json["friend"];
+    retval.from = json["from"];
+    retval.from_json = json["from_json"];
+    retval.func = json["func"];
+    retval.top_level_function = json["function"];
+    retval.get = json["get"];
+    retval.top_level_global = json["global"];
+    retval.go = json["go"];
+    retval.goto = json["goto"];
+    retval.guard = json["guard"];
+    retval.has_own_property = json["hasOwnProperty"];
+    retval.id = json["id"];
+    retval.top_level_if = json["if"];
+    retval.imp = json["IMP"];
+    retval.implements = json["implements"];
+    retval.implicit = json["implicit"];
+    retval.top_level_import = json["import"];
+    retval.in = json["in"];
+    retval.indirect = json["indirect"];
+    retval.infix = json["infix"];
+    retval.init = json["init"];
+    retval.top_level_inline = json["inline"];
+    retval.inout = json["inout"];
+    retval.instanceof = json["instanceof"];
+    retval.top_level_int = json["int"];
+    retval.interface = json["interface"];
+    retval.internal = json["internal"];
+    retval.is = json["is"];
+    retval.iterable = json["iterable"];
+    retval.jdec = json["jdec"];
+    retval.jenc = json["jenc"];
+    retval.jpipe = json["jpipe"];
+    retval.json = json["json"];
+    retval.json_converter = json["json_converter"];
+    retval.json_serializer = json["json_serializer"];
+    retval.json_token = json["json_token"];
+    retval.json_writer = json["json_writer"];
+    retval.top_level_lambda = json["lambda"];
+    retval.lazy = json["lazy"];
+    retval.left = json["left"];
+    retval.let = json["let"];
+    retval.list = json["list"];
+    retval.lock = json["lock"];
+    retval.long = json["long"];
+    retval.map = json["map"];
+    retval.metadata_property_handling = json["metadata_property_handling"];
+    retval.module = json["module"];
+    retval.mutable = json["mutable"];
+    retval.mutating = json["mutating"];
+    retval.namespace = json["namespace"];
+    retval.native = json["native"];
+    retval.new = json["new"];
+    retval.newtonsoft = json["newtonsoft"];
+    retval.nil = json["nil"];
+    retval.no = json["NO"];
+    retval.noexcept = json["noexcept"];
+    retval.nonatomic = json["nonatomic"];
+    retval.top_level_none = json["none"];
+    retval.none = json["None"];
+    retval.nonlocal = json["nonlocal"];
+    retval.nonmutating = json["nonmutating"];
+    retval.not = json["not"];
+    retval.not_eq = json["not_eq"];
+    retval.ns_string = json["NSString"];
+    retval.null = json["NULL"];
+    retval.top_level_null = json["null"];
+    retval.nullptr = json["nullptr"];
+    retval.number = json["number"];
+    retval.top_level_object = json["object"];
+    retval.of = json["of"];
+    retval.oneway = json["oneway"];
+    retval.open = json["open"];
+    retval.operator = json["operator"];
+    retval.top_level_optional = json["optional"];
+    retval.or = json["or"];
+    retval.or_eq = json["or_eq"];
+    retval.out = json["out"];
+    retval.override = json["override"];
+    retval.package = json["package"];
+    retval.params = json["params"];
+    retval.pass = json["pass"];
+    retval.port = json["port"];
+    retval.postfix = json["postfix"];
+    retval.precedence = json["precedence"];
+    retval.prefix = json["prefix"];
+    retval.print = json["print"];
+    retval.printf = json["printf"];
+    retval.top_level_private = json["private"];
+    retval.top_level_protected = json["protected"];
+    retval.protocol = json["Protocol"];
+    retval.top_level_protocol = json["protocol"];
+    retval.top_level_public = json["public"];
+    retval.quicktype = json["quicktype"];
+    retval.raise = json["raise"];
+    retval.range = json["range"];
+    retval.readonly = json["readonly"];
+    retval.ref = json["ref"];
+    retval.register = json["register"];
+    retval.reinterpret_cast = json["reinterpret_cast"];
+    retval.repeat = json["repeat"];
+    retval.require = json["require"];
+    retval.required = json["required"];
+    retval.requires = json["requires"];
+    retval.restrict = json["restrict"];
+    retval.retain = json["retain"];
+    retval.rethrows = json["rethrows"];
+    retval.top_level_return = json["return"];
+    retval.right = json["right"];
+    retval.sbyte = json["sbyte"];
+    retval.sealed = json["sealed"];
+    retval.sel = json["SEL"];
+    retval.select = json["select"];
+    retval.self = json["Self"];
+    retval.top_level_self = json["self"];
+    retval.serialize = json["serialize"];
+    retval.set = json["set"];
+    retval.short = json["short"];
+    retval.signed = json["signed"];
+    retval.sizeof = json["sizeof"];
+    retval.stackalloc = json["stackalloc"];
+    retval.top_level_static = json["static"];
+    retval.static_assert = json["static_assert"];
+    retval.static_cast = json["static_cast"];
+    retval.strictfp = json["strictfp"];
+    retval.top_level_string = json["string"];
+    retval.struct = json["struct"];
+    retval.subscript = json["subscript"];
+    retval.super = json["super"];
+    retval.top_level_switch = json["switch"];
+    retval.symbol = json["symbol"];
+    retval.synchronized = json["synchronized"];
+    retval.system = json["system"];
+    retval.template = json["template"];
+    retval.then = json["then"];
+    retval.this = json["this"];
+    retval.thread_local = json["thread_local"];
+    retval.throw = json["throw"];
+    retval.throws = json["throws"];
+    retval.to_json = json["to_json"];
+    retval.top_level = json["top_level"];
+    retval.transient = json["transient"];
+    retval.true = json["True"];
+    retval.top_level_true = json["true"];
+    retval.try = json["try"];
+    retval.type = json["Type"];
+    retval.top_level_type = json["type"];
+    retval.typealias = json["typealias"];
+    retval.top_level_typedef = json["typedef"];
+    retval.typeid = json["typeid"];
+    retval.typename = json["typename"];
+    retval.top_level_typeof = json["typeof"];
+    retval.uint = json["uint"];
+    retval.ulong = json["ulong"];
+    retval.unchecked = json["unchecked"];
+    retval.undefined = json["undefined"];
+    retval.union = json["union"];
+    retval.unowned = json["unowned"];
+    retval.unsafe = json["unsafe"];
+    retval.unsigned = json["unsigned"];
+    retval.ushort = json["ushort"];
+    retval.using = json["using"];
+    retval.var = json["var"];
+    retval.virtual = json["virtual"];
+    retval.top_level_void = json["void"];
+    retval.volatile = json["volatile"];
+    retval.wchar_t = json["wchar_t"];
+    retval.weak = json["weak"];
+    retval.where = json["where"];
+    retval.top_level_while = json["while"];
+    retval.will_set = json["willSet"];
+    retval.with = json["with"];
+    retval.xor = json["xor"];
+    retval.xor_eq = json["xor_eq"];
+    retval.yes = json["YES"];
+    retval.yield = json["yield"];
+
+    return retval;
+}
+
+typedef Abstract|float UnionAbstract;
+
+UnionAbstract UnionAbstract_from_JSON(mixed json) {
+    return json;
+}
+
+class Abstract {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Abstract Abstract_from_JSON(mixed json) {
+    Abstract retval = Abstract();
+
+    return retval;
+}
+
+typedef Alignas|float UnionAlignas;
+
+UnionAlignas UnionAlignas_from_JSON(mixed json) {
+    return json;
+}
+
+class Alignas {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Alignas Alignas_from_JSON(mixed json) {
+    Alignas retval = Alignas();
+
+    return retval;
+}
+
+typedef Alignof|float UnionAlignof;
+
+UnionAlignof UnionAlignof_from_JSON(mixed json) {
+    return json;
+}
+
+class Alignof {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Alignof Alignof_from_JSON(mixed json) {
+    Alignof retval = Alignof();
+
+    return retval;
+}
+
+typedef And|float UnionAnd;
+
+UnionAnd UnionAnd_from_JSON(mixed json) {
+    return json;
+}
+
+class And {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+And And_from_JSON(mixed json) {
+    And retval = And();
+
+    return retval;
+}
+
+typedef AndEq|float UnionAndEq;
+
+UnionAndEq UnionAndEq_from_JSON(mixed json) {
+    return json;
+}
+
+class AndEq {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+AndEq AndEq_from_JSON(mixed json) {
+    AndEq retval = AndEq();
+
+    return retval;
+}
+
+typedef Any|float UnionAny;
+
+UnionAny UnionAny_from_JSON(mixed json) {
+    return json;
+}
+
+class Any {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Any Any_from_JSON(mixed json) {
+    Any retval = Any();
+
+    return retval;
+}
+
+typedef As|float UnionAs;
+
+UnionAs UnionAs_from_JSON(mixed json) {
+    return json;
+}
+
+class As {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+As As_from_JSON(mixed json) {
+    As retval = As();
+
+    return retval;
+}
+
+typedef Asm|float UnionAsm;
+
+UnionAsm UnionAsm_from_JSON(mixed json) {
+    return json;
+}
+
+class Asm {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Asm Asm_from_JSON(mixed json) {
+    Asm retval = Asm();
+
+    return retval;
+}
+
+typedef Assert|float UnionAssert;
+
+UnionAssert UnionAssert_from_JSON(mixed json) {
+    return json;
+}
+
+class Assert {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Assert Assert_from_JSON(mixed json) {
+    Assert retval = Assert();
+
+    return retval;
+}
+
+typedef Associatedtype|float UnionAssociatedtype;
+
+UnionAssociatedtype UnionAssociatedtype_from_JSON(mixed json) {
+    return json;
+}
+
+class Associatedtype {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Associatedtype Associatedtype_from_JSON(mixed json) {
+    Associatedtype retval = Associatedtype();
+
+    return retval;
+}
+
+typedef Associativity|float UnionAssociativity;
+
+UnionAssociativity UnionAssociativity_from_JSON(mixed json) {
+    return json;
+}
+
+class Associativity {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Associativity Associativity_from_JSON(mixed json) {
+    Associativity retval = Associativity();
+
+    return retval;
+}
+
+typedef Async|float UnionAsync;
+
+UnionAsync UnionAsync_from_JSON(mixed json) {
+    return json;
+}
+
+class Async {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Async Async_from_JSON(mixed json) {
+    Async retval = Async();
+
+    return retval;
+}
+
+typedef Atomic|float UnionAtomic;
+
+UnionAtomic UnionAtomic_from_JSON(mixed json) {
+    return json;
+}
+
+class Atomic {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Atomic Atomic_from_JSON(mixed json) {
+    Atomic retval = Atomic();
+
+    return retval;
+}
+
+typedef AtomicCancel|float UnionAtomicCancel;
+
+UnionAtomicCancel UnionAtomicCancel_from_JSON(mixed json) {
+    return json;
+}
+
+class AtomicCancel {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+AtomicCancel AtomicCancel_from_JSON(mixed json) {
+    AtomicCancel retval = AtomicCancel();
+
+    return retval;
+}
+
+typedef AtomicCommit|float UnionAtomicCommit;
+
+UnionAtomicCommit UnionAtomicCommit_from_JSON(mixed json) {
+    return json;
+}
+
+class AtomicCommit {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+AtomicCommit AtomicCommit_from_JSON(mixed json) {
+    AtomicCommit retval = AtomicCommit();
+
+    return retval;
+}
+
+typedef AtomicNoexcept|float UnionAtomicNoexcept;
+
+UnionAtomicNoexcept UnionAtomicNoexcept_from_JSON(mixed json) {
+    return json;
+}
+
+class AtomicNoexcept {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+AtomicNoexcept AtomicNoexcept_from_JSON(mixed json) {
+    AtomicNoexcept retval = AtomicNoexcept();
+
+    return retval;
+}
+
+typedef Await|float UnionAwait;
+
+UnionAwait UnionAwait_from_JSON(mixed json) {
+    return json;
+}
+
+class Await {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Await Await_from_JSON(mixed json) {
+    Await retval = Await();
+
+    return retval;
+}
+
+typedef Base|float UnionBase;
+
+UnionBase UnionBase_from_JSON(mixed json) {
+    return json;
+}
+
+class Base {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Base Base_from_JSON(mixed json) {
+    Base retval = Base();
+
+    return retval;
+}
+
+typedef Bitand|float UnionBitand;
+
+UnionBitand UnionBitand_from_JSON(mixed json) {
+    return json;
+}
+
+class Bitand {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Bitand Bitand_from_JSON(mixed json) {
+    Bitand retval = Bitand();
+
+    return retval;
+}
+
+typedef Bitor|float UnionBitor;
+
+UnionBitor UnionBitor_from_JSON(mixed json) {
+    return json;
+}
+
+class Bitor {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Bitor Bitor_from_JSON(mixed json) {
+    Bitor retval = Bitor();
+
+    return retval;
+}
+
+typedef Bool|float UnionBool;
+
+UnionBool UnionBool_from_JSON(mixed json) {
+    return json;
+}
+
+class Bool {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Bool Bool_from_JSON(mixed json) {
+    Bool retval = Bool();
+
+    return retval;
+}
+
+typedef Boolean|float UnionBoolean;
+
+UnionBoolean UnionBoolean_from_JSON(mixed json) {
+    return json;
+}
+
+class Boolean {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Boolean Boolean_from_JSON(mixed json) {
+    Boolean retval = Boolean();
+
+    return retval;
+}
+
+typedef Bycopy|float UnionBycopy;
+
+UnionBycopy UnionBycopy_from_JSON(mixed json) {
+    return json;
+}
+
+class Bycopy {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Bycopy Bycopy_from_JSON(mixed json) {
+    Bycopy retval = Bycopy();
+
+    return retval;
+}
+
+typedef Byref|float UnionByref;
+
+UnionByref UnionByref_from_JSON(mixed json) {
+    return json;
+}
+
+class Byref {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Byref Byref_from_JSON(mixed json) {
+    Byref retval = Byref();
+
+    return retval;
+}
+
+typedef Byte|float UnionByte;
+
+UnionByte UnionByte_from_JSON(mixed json) {
+    return json;
+}
+
+class Byte {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Byte Byte_from_JSON(mixed json) {
+    Byte retval = Byte();
+
+    return retval;
+}
+
+typedef Chan|float UnionChan;
+
+UnionChan UnionChan_from_JSON(mixed json) {
+    return json;
+}
+
+class Chan {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Chan Chan_from_JSON(mixed json) {
+    Chan retval = Chan();
+
+    return retval;
+}
+
+typedef Char|float UnionChar;
+
+UnionChar UnionChar_from_JSON(mixed json) {
+    return json;
+}
+
+class Char {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Char Char_from_JSON(mixed json) {
+    Char retval = Char();
+
+    return retval;
+}
+
+typedef Char16T|float UnionChar16T;
+
+UnionChar16T UnionChar16T_from_JSON(mixed json) {
+    return json;
+}
+
+class Char16T {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Char16T Char16T_from_JSON(mixed json) {
+    Char16T retval = Char16T();
+
+    return retval;
+}
+
+typedef Char32T|float UnionChar32T;
+
+UnionChar32T UnionChar32T_from_JSON(mixed json) {
+    return json;
+}
+
+class Char32T {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Char32T Char32T_from_JSON(mixed json) {
+    Char32T retval = Char32T();
+
+    return retval;
+}
+
+typedef Checked|float UnionChecked;
+
+UnionChecked UnionChecked_from_JSON(mixed json) {
+    return json;
+}
+
+class Checked {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Checked Checked_from_JSON(mixed json) {
+    Checked retval = Checked();
+
+    return retval;
+}
+
+typedef CoAwait|float UnionCoAwait;
+
+UnionCoAwait UnionCoAwait_from_JSON(mixed json) {
+    return json;
+}
+
+class CoAwait {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+CoAwait CoAwait_from_JSON(mixed json) {
+    CoAwait retval = CoAwait();
+
+    return retval;
+}
+
+typedef CoReturn|float UnionCoReturn;
+
+UnionCoReturn UnionCoReturn_from_JSON(mixed json) {
+    return json;
+}
+
+class CoReturn {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+CoReturn CoReturn_from_JSON(mixed json) {
+    CoReturn retval = CoReturn();
+
+    return retval;
+}
+
+typedef CoYield|float UnionCoYield;
+
+UnionCoYield UnionCoYield_from_JSON(mixed json) {
+    return json;
+}
+
+class CoYield {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+CoYield CoYield_from_JSON(mixed json) {
+    CoYield retval = CoYield();
+
+    return retval;
+}
+
+typedef Compl|float UnionCompl;
+
+UnionCompl UnionCompl_from_JSON(mixed json) {
+    return json;
+}
+
+class Compl {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Compl Compl_from_JSON(mixed json) {
+    Compl retval = Compl();
+
+    return retval;
+}
+
+typedef Complex|float UnionComplex;
+
+UnionComplex UnionComplex_from_JSON(mixed json) {
+    return json;
+}
+
+class Complex {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Complex Complex_from_JSON(mixed json) {
+    Complex retval = Complex();
+
+    return retval;
+}
+
+typedef Concept|float UnionConcept;
+
+UnionConcept UnionConcept_from_JSON(mixed json) {
+    return json;
+}
+
+class Concept {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Concept Concept_from_JSON(mixed json) {
+    Concept retval = Concept();
+
+    return retval;
+}
+
+typedef Console|float UnionConsole;
+
+UnionConsole UnionConsole_from_JSON(mixed json) {
+    return json;
+}
+
+class Console {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Console Console_from_JSON(mixed json) {
+    Console retval = Console();
+
+    return retval;
+}
+
+typedef ConstCast|float UnionConstCast;
+
+UnionConstCast UnionConstCast_from_JSON(mixed json) {
+    return json;
+}
+
+class ConstCast {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ConstCast ConstCast_from_JSON(mixed json) {
+    ConstCast retval = ConstCast();
+
+    return retval;
+}
+
+typedef Constexpr|float UnionConstexpr;
+
+UnionConstexpr UnionConstexpr_from_JSON(mixed json) {
+    return json;
+}
+
+class Constexpr {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Constexpr Constexpr_from_JSON(mixed json) {
+    Constexpr retval = Constexpr();
+
+    return retval;
+}
+
+typedef Constructor|float UnionConstructor;
+
+UnionConstructor UnionConstructor_from_JSON(mixed json) {
+    return json;
+}
+
+class Constructor {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Constructor Constructor_from_JSON(mixed json) {
+    Constructor retval = Constructor();
+
+    return retval;
+}
+
+typedef Convenience|float UnionConvenience;
+
+UnionConvenience UnionConvenience_from_JSON(mixed json) {
+    return json;
+}
+
+class Convenience {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Convenience Convenience_from_JSON(mixed json) {
+    Convenience retval = Convenience();
+
+    return retval;
+}
+
+typedef Convert|float UnionConvert;
+
+UnionConvert UnionConvert_from_JSON(mixed json) {
+    return json;
+}
+
+class Convert {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Convert Convert_from_JSON(mixed json) {
+    Convert retval = Convert();
+
+    return retval;
+}
+
+typedef Converter|float UnionConverter;
+
+UnionConverter UnionConverter_from_JSON(mixed json) {
+    return json;
+}
+
+class Converter {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Converter Converter_from_JSON(mixed json) {
+    Converter retval = Converter();
+
+    return retval;
+}
+
+typedef Date|float UnionDate;
+
+UnionDate UnionDate_from_JSON(mixed json) {
+    return json;
+}
+
+class Date {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Date Date_from_JSON(mixed json) {
+    Date retval = Date();
+
+    return retval;
+}
+
+typedef DateParseHandling|float UnionDateParseHandling;
+
+UnionDateParseHandling UnionDateParseHandling_from_JSON(mixed json) {
+    return json;
+}
+
+class DateParseHandling {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DateParseHandling DateParseHandling_from_JSON(mixed json) {
+    DateParseHandling retval = DateParseHandling();
+
+    return retval;
+}
+
+typedef Debugger|float UnionDebugger;
+
+UnionDebugger UnionDebugger_from_JSON(mixed json) {
+    return json;
+}
+
+class Debugger {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Debugger Debugger_from_JSON(mixed json) {
+    Debugger retval = Debugger();
+
+    return retval;
+}
+
+typedef Decimal|float UnionDecimal;
+
+UnionDecimal UnionDecimal_from_JSON(mixed json) {
+    return json;
+}
+
+class Decimal {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Decimal Decimal_from_JSON(mixed json) {
+    Decimal retval = Decimal();
+
+    return retval;
+}
+
+typedef Declare|float UnionDeclare;
+
+UnionDeclare UnionDeclare_from_JSON(mixed json) {
+    return json;
+}
+
+class Declare {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Declare Declare_from_JSON(mixed json) {
+    Declare retval = Declare();
+
+    return retval;
+}
+
+typedef Decltype|float UnionDecltype;
+
+UnionDecltype UnionDecltype_from_JSON(mixed json) {
+    return json;
+}
+
+class Decltype {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Decltype Decltype_from_JSON(mixed json) {
+    Decltype retval = Decltype();
+
+    return retval;
+}
+
+typedef DecodeString|float UnionDecodeString;
+
+UnionDecodeString UnionDecodeString_from_JSON(mixed json) {
+    return json;
+}
+
+class DecodeString {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DecodeString DecodeString_from_JSON(mixed json) {
+    DecodeString retval = DecodeString();
+
+    return retval;
+}
+
+typedef Def|float UnionDef;
+
+UnionDef UnionDef_from_JSON(mixed json) {
+    return json;
+}
+
+class Def {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Def Def_from_JSON(mixed json) {
+    Def retval = Def();
+
+    return retval;
+}
+
+typedef Defer|float UnionDefer;
+
+UnionDefer UnionDefer_from_JSON(mixed json) {
+    return json;
+}
+
+class Defer {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Defer Defer_from_JSON(mixed json) {
+    Defer retval = Defer();
+
+    return retval;
+}
+
+typedef Deinit|float UnionDeinit;
+
+UnionDeinit UnionDeinit_from_JSON(mixed json) {
+    return json;
+}
+
+class Deinit {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Deinit Deinit_from_JSON(mixed json) {
+    Deinit retval = Deinit();
+
+    return retval;
+}
+
+typedef Del|float UnionDel;
+
+UnionDel UnionDel_from_JSON(mixed json) {
+    return json;
+}
+
+class Del {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Del Del_from_JSON(mixed json) {
+    Del retval = Del();
+
+    return retval;
+}
+
+typedef Delegate|float UnionDelegate;
+
+UnionDelegate UnionDelegate_from_JSON(mixed json) {
+    return json;
+}
+
+class Delegate {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Delegate Delegate_from_JSON(mixed json) {
+    Delegate retval = Delegate();
+
+    return retval;
+}
+
+typedef Delete|float UnionDelete;
+
+UnionDelete UnionDelete_from_JSON(mixed json) {
+    return json;
+}
+
+class Delete {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Delete Delete_from_JSON(mixed json) {
+    Delete retval = Delete();
+
+    return retval;
+}
+
+typedef Dict|float UnionDict;
+
+UnionDict UnionDict_from_JSON(mixed json) {
+    return json;
+}
+
+class Dict {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Dict Dict_from_JSON(mixed json) {
+    Dict retval = Dict();
+
+    return retval;
+}
+
+typedef Dictionary|float UnionDictionary;
+
+UnionDictionary UnionDictionary_from_JSON(mixed json) {
+    return json;
+}
+
+class Dictionary {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Dictionary Dictionary_from_JSON(mixed json) {
+    Dictionary retval = Dictionary();
+
+    return retval;
+}
+
+typedef DidSet|float UnionDidSet;
+
+UnionDidSet UnionDidSet_from_JSON(mixed json) {
+    return json;
+}
+
+class DidSet {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DidSet DidSet_from_JSON(mixed json) {
+    DidSet retval = DidSet();
+
+    return retval;
+}
+
+typedef float|Double UnionDouble;
+
+UnionDouble UnionDouble_from_JSON(mixed json) {
+    return json;
+}
+
+class Double {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Double Double_from_JSON(mixed json) {
+    Double retval = Double();
+
+    return retval;
+}
+
+typedef float|Dynamic UnionDynamic;
+
+UnionDynamic UnionDynamic_from_JSON(mixed json) {
+    return json;
+}
+
+class Dynamic {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Dynamic Dynamic_from_JSON(mixed json) {
+    Dynamic retval = Dynamic();
+
+    return retval;
+}
+
+typedef float|DynamicCast UnionDynamicCast;
+
+UnionDynamicCast UnionDynamicCast_from_JSON(mixed json) {
+    return json;
+}
+
+class DynamicCast {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DynamicCast DynamicCast_from_JSON(mixed json) {
+    DynamicCast retval = DynamicCast();
+
+    return retval;
+}
+
+typedef float|Elif UnionElif;
+
+UnionElif UnionElif_from_JSON(mixed json) {
+    return json;
+}
+
+class Elif {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Elif Elif_from_JSON(mixed json) {
+    Elif retval = Elif();
+
+    return retval;
+}
+
+typedef float|Empty UnionUnion;
+
+UnionUnion UnionUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class Empty {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Empty Empty_from_JSON(mixed json) {
+    Empty retval = Empty();
+
+    return retval;
+}
+
+typedef float|EncodeQuickType UnionEncodeQuickType;
+
+UnionEncodeQuickType UnionEncodeQuickType_from_JSON(mixed json) {
+    return json;
+}
+
+class EncodeQuickType {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+EncodeQuickType EncodeQuickType_from_JSON(mixed json) {
+    EncodeQuickType retval = EncodeQuickType();
+
+    return retval;
+}
+
+typedef float|Event UnionEvent;
+
+UnionEvent UnionEvent_from_JSON(mixed json) {
+    return json;
+}
+
+class Event {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Event Event_from_JSON(mixed json) {
+    Event retval = Event();
+
+    return retval;
+}
+
+typedef float|Except UnionExcept;
+
+UnionExcept UnionExcept_from_JSON(mixed json) {
+    return json;
+}
+
+class Except {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Except Except_from_JSON(mixed json) {
+    Except retval = Except();
+
+    return retval;
+}
+
+typedef float|Exception UnionException;
+
+UnionException UnionException_from_JSON(mixed json) {
+    return json;
+}
+
+class Exception {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Exception Exception_from_JSON(mixed json) {
+    Exception retval = Exception();
+
+    return retval;
+}
+
+typedef float|Explicit UnionExplicit;
+
+UnionExplicit UnionExplicit_from_JSON(mixed json) {
+    return json;
+}
+
+class Explicit {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Explicit Explicit_from_JSON(mixed json) {
+    Explicit retval = Explicit();
+
+    return retval;
+}
+
+typedef float|Export UnionExport;
+
+UnionExport UnionExport_from_JSON(mixed json) {
+    return json;
+}
+
+class Export {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Export Export_from_JSON(mixed json) {
+    Export retval = Export();
+
+    return retval;
+}
+
+typedef float|Exposing UnionExposing;
+
+UnionExposing UnionExposing_from_JSON(mixed json) {
+    return json;
+}
+
+class Exposing {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Exposing Exposing_from_JSON(mixed json) {
+    Exposing retval = Exposing();
+
+    return retval;
+}
+
+typedef float|Extends UnionExtends;
+
+UnionExtends UnionExtends_from_JSON(mixed json) {
+    return json;
+}
+
+class Extends {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Extends Extends_from_JSON(mixed json) {
+    Extends retval = Extends();
+
+    return retval;
+}
+
+typedef float|Extension UnionExtension;
+
+UnionExtension UnionExtension_from_JSON(mixed json) {
+    return json;
+}
+
+class Extension {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Extension Extension_from_JSON(mixed json) {
+    Extension retval = Extension();
+
+    return retval;
+}
+
+typedef float|Fallthrough UnionFallthrough;
+
+UnionFallthrough UnionFallthrough_from_JSON(mixed json) {
+    return json;
+}
+
+class Fallthrough {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Fallthrough Fallthrough_from_JSON(mixed json) {
+    Fallthrough retval = Fallthrough();
+
+    return retval;
+}
+
+typedef float|False UnionFalse;
+
+UnionFalse UnionFalse_from_JSON(mixed json) {
+    return json;
+}
+
+class False {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+False False_from_JSON(mixed json) {
+    False retval = False();
+
+    return retval;
+}
+
+typedef float|Fileprivate UnionFileprivate;
+
+UnionFileprivate UnionFileprivate_from_JSON(mixed json) {
+    return json;
+}
+
+class Fileprivate {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Fileprivate Fileprivate_from_JSON(mixed json) {
+    Fileprivate retval = Fileprivate();
+
+    return retval;
+}
+
+typedef float|Finally UnionFinally;
+
+UnionFinally UnionFinally_from_JSON(mixed json) {
+    return json;
+}
+
+class Finally {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Finally Finally_from_JSON(mixed json) {
+    Finally retval = Finally();
+
+    return retval;
+}
+
+typedef float|Fixed UnionFixed;
+
+UnionFixed UnionFixed_from_JSON(mixed json) {
+    return json;
+}
+
+class Fixed {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Fixed Fixed_from_JSON(mixed json) {
+    Fixed retval = Fixed();
+
+    return retval;
+}
+
+typedef float|Friend UnionFriend;
+
+UnionFriend UnionFriend_from_JSON(mixed json) {
+    return json;
+}
+
+class Friend {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Friend Friend_from_JSON(mixed json) {
+    Friend retval = Friend();
+
+    return retval;
+}
+
+typedef float|From UnionFrom;
+
+UnionFrom UnionFrom_from_JSON(mixed json) {
+    return json;
+}
+
+class From {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+From From_from_JSON(mixed json) {
+    From retval = From();
+
+    return retval;
+}
+
+typedef float|FromJson UnionFromJson;
+
+UnionFromJson UnionFromJson_from_JSON(mixed json) {
+    return json;
+}
+
+class FromJson {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+FromJson FromJson_from_JSON(mixed json) {
+    FromJson retval = FromJson();
+
+    return retval;
+}
+
+typedef float|Func UnionFunc;
+
+UnionFunc UnionFunc_from_JSON(mixed json) {
+    return json;
+}
+
+class Func {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Func Func_from_JSON(mixed json) {
+    Func retval = Func();
+
+    return retval;
+}
+
+typedef float|Get UnionGet;
+
+UnionGet UnionGet_from_JSON(mixed json) {
+    return json;
+}
+
+class Get {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Get Get_from_JSON(mixed json) {
+    Get retval = Get();
+
+    return retval;
+}
+
+typedef float|Go UnionGo;
+
+UnionGo UnionGo_from_JSON(mixed json) {
+    return json;
+}
+
+class Go {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Go Go_from_JSON(mixed json) {
+    Go retval = Go();
+
+    return retval;
+}
+
+typedef float|Goto UnionGoto;
+
+UnionGoto UnionGoto_from_JSON(mixed json) {
+    return json;
+}
+
+class Goto {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Goto Goto_from_JSON(mixed json) {
+    Goto retval = Goto();
+
+    return retval;
+}
+
+typedef float|Guard UnionGuard;
+
+UnionGuard UnionGuard_from_JSON(mixed json) {
+    return json;
+}
+
+class Guard {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Guard Guard_from_JSON(mixed json) {
+    Guard retval = Guard();
+
+    return retval;
+}
+
+typedef float|HasOwnProperty UnionHasOwnProperty;
+
+UnionHasOwnProperty UnionHasOwnProperty_from_JSON(mixed json) {
+    return json;
+}
+
+class HasOwnProperty {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+HasOwnProperty HasOwnProperty_from_JSON(mixed json) {
+    HasOwnProperty retval = HasOwnProperty();
+
+    return retval;
+}
+
+typedef float|Id UnionId;
+
+UnionId UnionId_from_JSON(mixed json) {
+    return json;
+}
+
+class Id {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Id Id_from_JSON(mixed json) {
+    Id retval = Id();
+
+    return retval;
+}
+
+typedef float|Imaginery UnionImaginery;
+
+UnionImaginery UnionImaginery_from_JSON(mixed json) {
+    return json;
+}
+
+class Imaginery {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Imaginery Imaginery_from_JSON(mixed json) {
+    Imaginery retval = Imaginery();
+
+    return retval;
+}
+
+typedef float|Imp UnionImp;
+
+UnionImp UnionImp_from_JSON(mixed json) {
+    return json;
+}
+
+class Imp {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Imp Imp_from_JSON(mixed json) {
+    Imp retval = Imp();
+
+    return retval;
+}
+
+typedef float|Implements UnionImplements;
+
+UnionImplements UnionImplements_from_JSON(mixed json) {
+    return json;
+}
+
+class Implements {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Implements Implements_from_JSON(mixed json) {
+    Implements retval = Implements();
+
+    return retval;
+}
+
+typedef float|Implicit UnionImplicit;
+
+UnionImplicit UnionImplicit_from_JSON(mixed json) {
+    return json;
+}
+
+class Implicit {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Implicit Implicit_from_JSON(mixed json) {
+    Implicit retval = Implicit();
+
+    return retval;
+}
+
+typedef float|In UnionIn;
+
+UnionIn UnionIn_from_JSON(mixed json) {
+    return json;
+}
+
+class In {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+In In_from_JSON(mixed json) {
+    In retval = In();
+
+    return retval;
+}
+
+typedef float|Indirect UnionIndirect;
+
+UnionIndirect UnionIndirect_from_JSON(mixed json) {
+    return json;
+}
+
+class Indirect {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Indirect Indirect_from_JSON(mixed json) {
+    Indirect retval = Indirect();
+
+    return retval;
+}
+
+typedef float|Infix UnionInfix;
+
+UnionInfix UnionInfix_from_JSON(mixed json) {
+    return json;
+}
+
+class Infix {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Infix Infix_from_JSON(mixed json) {
+    Infix retval = Infix();
+
+    return retval;
+}
+
+typedef float|Init UnionInit;
+
+UnionInit UnionInit_from_JSON(mixed json) {
+    return json;
+}
+
+class Init {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Init Init_from_JSON(mixed json) {
+    Init retval = Init();
+
+    return retval;
+}
+
+typedef float|Inout UnionInout;
+
+UnionInout UnionInout_from_JSON(mixed json) {
+    return json;
+}
+
+class Inout {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Inout Inout_from_JSON(mixed json) {
+    Inout retval = Inout();
+
+    return retval;
+}
+
+typedef float|Instanceof UnionInstanceof;
+
+UnionInstanceof UnionInstanceof_from_JSON(mixed json) {
+    return json;
+}
+
+class Instanceof {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Instanceof Instanceof_from_JSON(mixed json) {
+    Instanceof retval = Instanceof();
+
+    return retval;
+}
+
+typedef float|Interface UnionInterface;
+
+UnionInterface UnionInterface_from_JSON(mixed json) {
+    return json;
+}
+
+class Interface {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Interface Interface_from_JSON(mixed json) {
+    Interface retval = Interface();
+
+    return retval;
+}
+
+typedef float|Internal UnionInternal;
+
+UnionInternal UnionInternal_from_JSON(mixed json) {
+    return json;
+}
+
+class Internal {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Internal Internal_from_JSON(mixed json) {
+    Internal retval = Internal();
+
+    return retval;
+}
+
+typedef float|Is UnionIs;
+
+UnionIs UnionIs_from_JSON(mixed json) {
+    return json;
+}
+
+class Is {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Is Is_from_JSON(mixed json) {
+    Is retval = Is();
+
+    return retval;
+}
+
+typedef float|Iterable UnionIterable;
+
+UnionIterable UnionIterable_from_JSON(mixed json) {
+    return json;
+}
+
+class Iterable {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Iterable Iterable_from_JSON(mixed json) {
+    Iterable retval = Iterable();
+
+    return retval;
+}
+
+typedef float|Jdec UnionJdec;
+
+UnionJdec UnionJdec_from_JSON(mixed json) {
+    return json;
+}
+
+class Jdec {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Jdec Jdec_from_JSON(mixed json) {
+    Jdec retval = Jdec();
+
+    return retval;
+}
+
+typedef float|Jenc UnionJenc;
+
+UnionJenc UnionJenc_from_JSON(mixed json) {
+    return json;
+}
+
+class Jenc {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Jenc Jenc_from_JSON(mixed json) {
+    Jenc retval = Jenc();
+
+    return retval;
+}
+
+typedef float|Jpipe UnionJpipe;
+
+UnionJpipe UnionJpipe_from_JSON(mixed json) {
+    return json;
+}
+
+class Jpipe {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Jpipe Jpipe_from_JSON(mixed json) {
+    Jpipe retval = Jpipe();
+
+    return retval;
+}
+
+typedef float|Json UnionJson;
+
+UnionJson UnionJson_from_JSON(mixed json) {
+    return json;
+}
+
+class Json {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Json Json_from_JSON(mixed json) {
+    Json retval = Json();
+
+    return retval;
+}
+
+typedef float|JsonConverter UnionJsonConverter;
+
+UnionJsonConverter UnionJsonConverter_from_JSON(mixed json) {
+    return json;
+}
+
+class JsonConverter {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+JsonConverter JsonConverter_from_JSON(mixed json) {
+    JsonConverter retval = JsonConverter();
+
+    return retval;
+}
+
+typedef float|JsonSerializer UnionJsonSerializer;
+
+UnionJsonSerializer UnionJsonSerializer_from_JSON(mixed json) {
+    return json;
+}
+
+class JsonSerializer {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+JsonSerializer JsonSerializer_from_JSON(mixed json) {
+    JsonSerializer retval = JsonSerializer();
+
+    return retval;
+}
+
+typedef float|JsonToken UnionJsonToken;
+
+UnionJsonToken UnionJsonToken_from_JSON(mixed json) {
+    return json;
+}
+
+class JsonToken {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+JsonToken JsonToken_from_JSON(mixed json) {
+    JsonToken retval = JsonToken();
+
+    return retval;
+}
+
+typedef float|JsonWriter UnionJsonWriter;
+
+UnionJsonWriter UnionJsonWriter_from_JSON(mixed json) {
+    return json;
+}
+
+class JsonWriter {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+JsonWriter JsonWriter_from_JSON(mixed json) {
+    JsonWriter retval = JsonWriter();
+
+    return retval;
+}
+
+typedef float|Lazy UnionLazy;
+
+UnionLazy UnionLazy_from_JSON(mixed json) {
+    return json;
+}
+
+class Lazy {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Lazy Lazy_from_JSON(mixed json) {
+    Lazy retval = Lazy();
+
+    return retval;
+}
+
+typedef float|Left UnionLeft;
+
+UnionLeft UnionLeft_from_JSON(mixed json) {
+    return json;
+}
+
+class Left {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Left Left_from_JSON(mixed json) {
+    Left retval = Left();
+
+    return retval;
+}
+
+typedef float|Let UnionLet;
+
+UnionLet UnionLet_from_JSON(mixed json) {
+    return json;
+}
+
+class Let {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Let Let_from_JSON(mixed json) {
+    Let retval = Let();
+
+    return retval;
+}
+
+typedef float|List UnionList;
+
+UnionList UnionList_from_JSON(mixed json) {
+    return json;
+}
+
+class List {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+List List_from_JSON(mixed json) {
+    List retval = List();
+
+    return retval;
+}
+
+typedef float|Lock UnionLock;
+
+UnionLock UnionLock_from_JSON(mixed json) {
+    return json;
+}
+
+class Lock {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Lock Lock_from_JSON(mixed json) {
+    Lock retval = Lock();
+
+    return retval;
+}
+
+typedef float|Long UnionLong;
+
+UnionLong UnionLong_from_JSON(mixed json) {
+    return json;
+}
+
+class Long {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Long Long_from_JSON(mixed json) {
+    Long retval = Long();
+
+    return retval;
+}
+
+typedef float|Map UnionMap;
+
+UnionMap UnionMap_from_JSON(mixed json) {
+    return json;
+}
+
+class Map {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Map Map_from_JSON(mixed json) {
+    Map retval = Map();
+
+    return retval;
+}
+
+typedef float|MetadataPropertyHandling UnionMetadataPropertyHandling;
+
+UnionMetadataPropertyHandling UnionMetadataPropertyHandling_from_JSON(mixed json) {
+    return json;
+}
+
+class MetadataPropertyHandling {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+MetadataPropertyHandling MetadataPropertyHandling_from_JSON(mixed json) {
+    MetadataPropertyHandling retval = MetadataPropertyHandling();
+
+    return retval;
+}
+
+typedef float|Module UnionModule;
+
+UnionModule UnionModule_from_JSON(mixed json) {
+    return json;
+}
+
+class Module {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Module Module_from_JSON(mixed json) {
+    Module retval = Module();
+
+    return retval;
+}
+
+typedef float|Mutable UnionMutable;
+
+UnionMutable UnionMutable_from_JSON(mixed json) {
+    return json;
+}
+
+class Mutable {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Mutable Mutable_from_JSON(mixed json) {
+    Mutable retval = Mutable();
+
+    return retval;
+}
+
+typedef float|Mutating UnionMutating;
+
+UnionMutating UnionMutating_from_JSON(mixed json) {
+    return json;
+}
+
+class Mutating {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Mutating Mutating_from_JSON(mixed json) {
+    Mutating retval = Mutating();
+
+    return retval;
+}
+
+typedef float|Namespace UnionNamespace;
+
+UnionNamespace UnionNamespace_from_JSON(mixed json) {
+    return json;
+}
+
+class Namespace {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Namespace Namespace_from_JSON(mixed json) {
+    Namespace retval = Namespace();
+
+    return retval;
+}
+
+typedef float|Native UnionNative;
+
+UnionNative UnionNative_from_JSON(mixed json) {
+    return json;
+}
+
+class Native {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Native Native_from_JSON(mixed json) {
+    Native retval = Native();
+
+    return retval;
+}
+
+typedef float|New UnionNew;
+
+UnionNew UnionNew_from_JSON(mixed json) {
+    return json;
+}
+
+class New {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+New New_from_JSON(mixed json) {
+    New retval = New();
+
+    return retval;
+}
+
+typedef float|Newtonsoft UnionNewtonsoft;
+
+UnionNewtonsoft UnionNewtonsoft_from_JSON(mixed json) {
+    return json;
+}
+
+class Newtonsoft {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Newtonsoft Newtonsoft_from_JSON(mixed json) {
+    Newtonsoft retval = Newtonsoft();
+
+    return retval;
+}
+
+typedef float|Nil UnionNil;
+
+UnionNil UnionNil_from_JSON(mixed json) {
+    return json;
+}
+
+class Nil {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nil Nil_from_JSON(mixed json) {
+    Nil retval = Nil();
+
+    return retval;
+}
+
+typedef float|No UnionNo;
+
+UnionNo UnionNo_from_JSON(mixed json) {
+    return json;
+}
+
+class No {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+No No_from_JSON(mixed json) {
+    No retval = No();
+
+    return retval;
+}
+
+typedef float|Noexcept UnionNoexcept;
+
+UnionNoexcept UnionNoexcept_from_JSON(mixed json) {
+    return json;
+}
+
+class Noexcept {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Noexcept Noexcept_from_JSON(mixed json) {
+    Noexcept retval = Noexcept();
+
+    return retval;
+}
+
+typedef float|Nonatomic UnionNonatomic;
+
+UnionNonatomic UnionNonatomic_from_JSON(mixed json) {
+    return json;
+}
+
+class Nonatomic {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nonatomic Nonatomic_from_JSON(mixed json) {
+    Nonatomic retval = Nonatomic();
+
+    return retval;
+}
+
+typedef float|None UnionNone;
+
+UnionNone UnionNone_from_JSON(mixed json) {
+    return json;
+}
+
+class None {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+None None_from_JSON(mixed json) {
+    None retval = None();
+
+    return retval;
+}
+
+typedef float|Nonlocal UnionNonlocal;
+
+UnionNonlocal UnionNonlocal_from_JSON(mixed json) {
+    return json;
+}
+
+class Nonlocal {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nonlocal Nonlocal_from_JSON(mixed json) {
+    Nonlocal retval = Nonlocal();
+
+    return retval;
+}
+
+typedef float|Nonmutating UnionNonmutating;
+
+UnionNonmutating UnionNonmutating_from_JSON(mixed json) {
+    return json;
+}
+
+class Nonmutating {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nonmutating Nonmutating_from_JSON(mixed json) {
+    Nonmutating retval = Nonmutating();
+
+    return retval;
+}
+
+typedef float|Not UnionNot;
+
+UnionNot UnionNot_from_JSON(mixed json) {
+    return json;
+}
+
+class Not {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Not Not_from_JSON(mixed json) {
+    Not retval = Not();
+
+    return retval;
+}
+
+typedef float|NotEq UnionNotEq;
+
+UnionNotEq UnionNotEq_from_JSON(mixed json) {
+    return json;
+}
+
+class NotEq {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NotEq NotEq_from_JSON(mixed json) {
+    NotEq retval = NotEq();
+
+    return retval;
+}
+
+typedef float|NsString UnionNsString;
+
+UnionNsString UnionNsString_from_JSON(mixed json) {
+    return json;
+}
+
+class NsString {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NsString NsString_from_JSON(mixed json) {
+    NsString retval = NsString();
+
+    return retval;
+}
+
+typedef float|Null UnionNull;
+
+UnionNull UnionNull_from_JSON(mixed json) {
+    return json;
+}
+
+class Null {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Null Null_from_JSON(mixed json) {
+    Null retval = Null();
+
+    return retval;
+}
+
+typedef float|Nullptr UnionNullptr;
+
+UnionNullptr UnionNullptr_from_JSON(mixed json) {
+    return json;
+}
+
+class Nullptr {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nullptr Nullptr_from_JSON(mixed json) {
+    Nullptr retval = Nullptr();
+
+    return retval;
+}
+
+typedef float|Number UnionNumber;
+
+UnionNumber UnionNumber_from_JSON(mixed json) {
+    return json;
+}
+
+class Number {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Number Number_from_JSON(mixed json) {
+    Number retval = Number();
+
+    return retval;
+}
+
+typedef float|Of UnionOf;
+
+UnionOf UnionOf_from_JSON(mixed json) {
+    return json;
+}
+
+class Of {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Of Of_from_JSON(mixed json) {
+    Of retval = Of();
+
+    return retval;
+}
+
+typedef float|Oneway UnionOneway;
+
+UnionOneway UnionOneway_from_JSON(mixed json) {
+    return json;
+}
+
+class Oneway {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Oneway Oneway_from_JSON(mixed json) {
+    Oneway retval = Oneway();
+
+    return retval;
+}
+
+typedef float|Open UnionOpen;
+
+UnionOpen UnionOpen_from_JSON(mixed json) {
+    return json;
+}
+
+class Open {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Open Open_from_JSON(mixed json) {
+    Open retval = Open();
+
+    return retval;
+}
+
+typedef float|Operator UnionOperator;
+
+UnionOperator UnionOperator_from_JSON(mixed json) {
+    return json;
+}
+
+class Operator {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Operator Operator_from_JSON(mixed json) {
+    Operator retval = Operator();
+
+    return retval;
+}
+
+typedef float|Or UnionOr;
+
+UnionOr UnionOr_from_JSON(mixed json) {
+    return json;
+}
+
+class Or {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Or Or_from_JSON(mixed json) {
+    Or retval = Or();
+
+    return retval;
+}
+
+typedef float|OrEq UnionOrEq;
+
+UnionOrEq UnionOrEq_from_JSON(mixed json) {
+    return json;
+}
+
+class OrEq {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OrEq OrEq_from_JSON(mixed json) {
+    OrEq retval = OrEq();
+
+    return retval;
+}
+
+typedef float|Out UnionOut;
+
+UnionOut UnionOut_from_JSON(mixed json) {
+    return json;
+}
+
+class Out {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Out Out_from_JSON(mixed json) {
+    Out retval = Out();
+
+    return retval;
+}
+
+typedef float|Override UnionOverride;
+
+UnionOverride UnionOverride_from_JSON(mixed json) {
+    return json;
+}
+
+class Override {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Override Override_from_JSON(mixed json) {
+    Override retval = Override();
+
+    return retval;
+}
+
+typedef float|Package UnionPackage;
+
+UnionPackage UnionPackage_from_JSON(mixed json) {
+    return json;
+}
+
+class Package {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Package Package_from_JSON(mixed json) {
+    Package retval = Package();
+
+    return retval;
+}
+
+typedef float|Params UnionParams;
+
+UnionParams UnionParams_from_JSON(mixed json) {
+    return json;
+}
+
+class Params {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Params Params_from_JSON(mixed json) {
+    Params retval = Params();
+
+    return retval;
+}
+
+typedef float|Pass UnionPass;
+
+UnionPass UnionPass_from_JSON(mixed json) {
+    return json;
+}
+
+class Pass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Pass Pass_from_JSON(mixed json) {
+    Pass retval = Pass();
+
+    return retval;
+}
+
+typedef float|Port UnionPort;
+
+UnionPort UnionPort_from_JSON(mixed json) {
+    return json;
+}
+
+class Port {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Port Port_from_JSON(mixed json) {
+    Port retval = Port();
+
+    return retval;
+}
+
+typedef float|Postfix UnionPostfix;
+
+UnionPostfix UnionPostfix_from_JSON(mixed json) {
+    return json;
+}
+
+class Postfix {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Postfix Postfix_from_JSON(mixed json) {
+    Postfix retval = Postfix();
+
+    return retval;
+}
+
+typedef float|Precedence UnionPrecedence;
+
+UnionPrecedence UnionPrecedence_from_JSON(mixed json) {
+    return json;
+}
+
+class Precedence {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Precedence Precedence_from_JSON(mixed json) {
+    Precedence retval = Precedence();
+
+    return retval;
+}
+
+typedef float|Prefix UnionPrefix;
+
+UnionPrefix UnionPrefix_from_JSON(mixed json) {
+    return json;
+}
+
+class Prefix {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Prefix Prefix_from_JSON(mixed json) {
+    Prefix retval = Prefix();
+
+    return retval;
+}
+
+typedef float|Print UnionPrint;
+
+UnionPrint UnionPrint_from_JSON(mixed json) {
+    return json;
+}
+
+class Print {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Print Print_from_JSON(mixed json) {
+    Print retval = Print();
+
+    return retval;
+}
+
+typedef float|Printf UnionPrintf;
+
+UnionPrintf UnionPrintf_from_JSON(mixed json) {
+    return json;
+}
+
+class Printf {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Printf Printf_from_JSON(mixed json) {
+    Printf retval = Printf();
+
+    return retval;
+}
+
+typedef float|Protocol UnionProtocol;
+
+UnionProtocol UnionProtocol_from_JSON(mixed json) {
+    return json;
+}
+
+class Protocol {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Protocol Protocol_from_JSON(mixed json) {
+    Protocol retval = Protocol();
+
+    return retval;
+}
+
+typedef float|UnionBoolBool TopLevelUnionBool;
+
+TopLevelUnionBool TopLevelUnionBool_from_JSON(mixed json) {
+    return json;
+}
+
+class UnionBoolBool {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+UnionBoolBool UnionBoolBool_from_JSON(mixed json) {
+    UnionBoolBool retval = UnionBoolBool();
+
+    return retval;
+}
+
+typedef ClassClass|float UnionClassUnion;
+
+UnionClassUnion UnionClassUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class ClassClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ClassClass ClassClass_from_JSON(mixed json) {
+    ClassClass retval = ClassClass();
+
+    return retval;
+}
+
+typedef float|Quicktype UnionQuicktype;
+
+UnionQuicktype UnionQuicktype_from_JSON(mixed json) {
+    return json;
+}
+
+class Quicktype {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Quicktype Quicktype_from_JSON(mixed json) {
+    Quicktype retval = Quicktype();
+
+    return retval;
+}
+
+typedef float|Raise UnionRaise;
+
+UnionRaise UnionRaise_from_JSON(mixed json) {
+    return json;
+}
+
+class Raise {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Raise Raise_from_JSON(mixed json) {
+    Raise retval = Raise();
+
+    return retval;
+}
+
+typedef float|Range UnionRange;
+
+UnionRange UnionRange_from_JSON(mixed json) {
+    return json;
+}
+
+class Range {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Range Range_from_JSON(mixed json) {
+    Range retval = Range();
+
+    return retval;
+}
+
+typedef float|Readonly UnionReadonly;
+
+UnionReadonly UnionReadonly_from_JSON(mixed json) {
+    return json;
+}
+
+class Readonly {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Readonly Readonly_from_JSON(mixed json) {
+    Readonly retval = Readonly();
+
+    return retval;
+}
+
+typedef float|Ref UnionRef;
+
+UnionRef UnionRef_from_JSON(mixed json) {
+    return json;
+}
+
+class Ref {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Ref Ref_from_JSON(mixed json) {
+    Ref retval = Ref();
+
+    return retval;
+}
+
+typedef float|Register UnionRegister;
+
+UnionRegister UnionRegister_from_JSON(mixed json) {
+    return json;
+}
+
+class Register {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Register Register_from_JSON(mixed json) {
+    Register retval = Register();
+
+    return retval;
+}
+
+typedef float|ReinterpretCast UnionReinterpretCast;
+
+UnionReinterpretCast UnionReinterpretCast_from_JSON(mixed json) {
+    return json;
+}
+
+class ReinterpretCast {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ReinterpretCast ReinterpretCast_from_JSON(mixed json) {
+    ReinterpretCast retval = ReinterpretCast();
+
+    return retval;
+}
+
+typedef float|Repeat UnionRepeat;
+
+UnionRepeat UnionRepeat_from_JSON(mixed json) {
+    return json;
+}
+
+class Repeat {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Repeat Repeat_from_JSON(mixed json) {
+    Repeat retval = Repeat();
+
+    return retval;
+}
+
+typedef float|Require UnionRequire;
+
+UnionRequire UnionRequire_from_JSON(mixed json) {
+    return json;
+}
+
+class Require {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Require Require_from_JSON(mixed json) {
+    Require retval = Require();
+
+    return retval;
+}
+
+typedef float|Required UnionRequired;
+
+UnionRequired UnionRequired_from_JSON(mixed json) {
+    return json;
+}
+
+class Required {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Required Required_from_JSON(mixed json) {
+    Required retval = Required();
+
+    return retval;
+}
+
+typedef float|Requires UnionRequires;
+
+UnionRequires UnionRequires_from_JSON(mixed json) {
+    return json;
+}
+
+class Requires {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Requires Requires_from_JSON(mixed json) {
+    Requires retval = Requires();
+
+    return retval;
+}
+
+typedef float|Restrict UnionRestrict;
+
+UnionRestrict UnionRestrict_from_JSON(mixed json) {
+    return json;
+}
+
+class Restrict {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Restrict Restrict_from_JSON(mixed json) {
+    Restrict retval = Restrict();
+
+    return retval;
+}
+
+typedef float|Retain UnionRetain;
+
+UnionRetain UnionRetain_from_JSON(mixed json) {
+    return json;
+}
+
+class Retain {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Retain Retain_from_JSON(mixed json) {
+    Retain retval = Retain();
+
+    return retval;
+}
+
+typedef float|Rethrows UnionRethrows;
+
+UnionRethrows UnionRethrows_from_JSON(mixed json) {
+    return json;
+}
+
+class Rethrows {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Rethrows Rethrows_from_JSON(mixed json) {
+    Rethrows retval = Rethrows();
+
+    return retval;
+}
+
+typedef float|Right UnionRight;
+
+UnionRight UnionRight_from_JSON(mixed json) {
+    return json;
+}
+
+class Right {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Right Right_from_JSON(mixed json) {
+    Right retval = Right();
+
+    return retval;
+}
+
+typedef float|Sbyte UnionSbyte;
+
+UnionSbyte UnionSbyte_from_JSON(mixed json) {
+    return json;
+}
+
+class Sbyte {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sbyte Sbyte_from_JSON(mixed json) {
+    Sbyte retval = Sbyte();
+
+    return retval;
+}
+
+typedef float|Sealed UnionSealed;
+
+UnionSealed UnionSealed_from_JSON(mixed json) {
+    return json;
+}
+
+class Sealed {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sealed Sealed_from_JSON(mixed json) {
+    Sealed retval = Sealed();
+
+    return retval;
+}
+
+typedef float|Sel UnionSel;
+
+UnionSel UnionSel_from_JSON(mixed json) {
+    return json;
+}
+
+class Sel {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sel Sel_from_JSON(mixed json) {
+    Sel retval = Sel();
+
+    return retval;
+}
+
+typedef float|Select UnionSelect;
+
+UnionSelect UnionSelect_from_JSON(mixed json) {
+    return json;
+}
+
+class Select {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Select Select_from_JSON(mixed json) {
+    Select retval = Select();
+
+    return retval;
+}
+
+typedef float|Self UnionSelf;
+
+UnionSelf UnionSelf_from_JSON(mixed json) {
+    return json;
+}
+
+class Self {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Self Self_from_JSON(mixed json) {
+    Self retval = Self();
+
+    return retval;
+}
+
+typedef float|Serialize UnionSerialize;
+
+UnionSerialize UnionSerialize_from_JSON(mixed json) {
+    return json;
+}
+
+class Serialize {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Serialize Serialize_from_JSON(mixed json) {
+    Serialize retval = Serialize();
+
+    return retval;
+}
+
+typedef float|Set UnionSet;
+
+UnionSet UnionSet_from_JSON(mixed json) {
+    return json;
+}
+
+class Set {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Set Set_from_JSON(mixed json) {
+    Set retval = Set();
+
+    return retval;
+}
+
+typedef float|Short UnionShort;
+
+UnionShort UnionShort_from_JSON(mixed json) {
+    return json;
+}
+
+class Short {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Short Short_from_JSON(mixed json) {
+    Short retval = Short();
+
+    return retval;
+}
+
+typedef float|Signed UnionSigned;
+
+UnionSigned UnionSigned_from_JSON(mixed json) {
+    return json;
+}
+
+class Signed {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Signed Signed_from_JSON(mixed json) {
+    Signed retval = Signed();
+
+    return retval;
+}
+
+typedef float|Sizeof UnionSizeof;
+
+UnionSizeof UnionSizeof_from_JSON(mixed json) {
+    return json;
+}
+
+class Sizeof {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sizeof Sizeof_from_JSON(mixed json) {
+    Sizeof retval = Sizeof();
+
+    return retval;
+}
+
+typedef float|Stackalloc UnionStackalloc;
+
+UnionStackalloc UnionStackalloc_from_JSON(mixed json) {
+    return json;
+}
+
+class Stackalloc {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Stackalloc Stackalloc_from_JSON(mixed json) {
+    Stackalloc retval = Stackalloc();
+
+    return retval;
+}
+
+typedef float|StaticAssert UnionStaticAssert;
+
+UnionStaticAssert UnionStaticAssert_from_JSON(mixed json) {
+    return json;
+}
+
+class StaticAssert {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+StaticAssert StaticAssert_from_JSON(mixed json) {
+    StaticAssert retval = StaticAssert();
+
+    return retval;
+}
+
+typedef float|StaticCast UnionStaticCast;
+
+UnionStaticCast UnionStaticCast_from_JSON(mixed json) {
+    return json;
+}
+
+class StaticCast {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+StaticCast StaticCast_from_JSON(mixed json) {
+    StaticCast retval = StaticCast();
+
+    return retval;
+}
+
+typedef float|Strictfp UnionStrictfp;
+
+UnionStrictfp UnionStrictfp_from_JSON(mixed json) {
+    return json;
+}
+
+class Strictfp {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Strictfp Strictfp_from_JSON(mixed json) {
+    Strictfp retval = Strictfp();
+
+    return retval;
+}
+
+typedef float|Struct UnionStruct;
+
+UnionStruct UnionStruct_from_JSON(mixed json) {
+    return json;
+}
+
+class Struct {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Struct Struct_from_JSON(mixed json) {
+    Struct retval = Struct();
+
+    return retval;
+}
+
+typedef float|Subscript UnionSubscript;
+
+UnionSubscript UnionSubscript_from_JSON(mixed json) {
+    return json;
+}
+
+class Subscript {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Subscript Subscript_from_JSON(mixed json) {
+    Subscript retval = Subscript();
+
+    return retval;
+}
+
+typedef float|Super UnionSuper;
+
+UnionSuper UnionSuper_from_JSON(mixed json) {
+    return json;
+}
+
+class Super {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Super Super_from_JSON(mixed json) {
+    Super retval = Super();
+
+    return retval;
+}
+
+typedef float|Symbol UnionSymbol;
+
+UnionSymbol UnionSymbol_from_JSON(mixed json) {
+    return json;
+}
+
+class Symbol {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Symbol Symbol_from_JSON(mixed json) {
+    Symbol retval = Symbol();
+
+    return retval;
+}
+
+typedef float|Synchronized UnionSynchronized;
+
+UnionSynchronized UnionSynchronized_from_JSON(mixed json) {
+    return json;
+}
+
+class Synchronized {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Synchronized Synchronized_from_JSON(mixed json) {
+    Synchronized retval = Synchronized();
+
+    return retval;
+}
+
+typedef float|System UnionSystem;
+
+UnionSystem UnionSystem_from_JSON(mixed json) {
+    return json;
+}
+
+class System {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+System System_from_JSON(mixed json) {
+    System retval = System();
+
+    return retval;
+}
+
+typedef float|Template UnionTemplate;
+
+UnionTemplate UnionTemplate_from_JSON(mixed json) {
+    return json;
+}
+
+class Template {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Template Template_from_JSON(mixed json) {
+    Template retval = Template();
+
+    return retval;
+}
+
+typedef float|Then UnionThen;
+
+UnionThen UnionThen_from_JSON(mixed json) {
+    return json;
+}
+
+class Then {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Then Then_from_JSON(mixed json) {
+    Then retval = Then();
+
+    return retval;
+}
+
+typedef float|This UnionThis;
+
+UnionThis UnionThis_from_JSON(mixed json) {
+    return json;
+}
+
+class This {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+This This_from_JSON(mixed json) {
+    This retval = This();
+
+    return retval;
+}
+
+typedef float|ThreadLocal UnionThreadLocal;
+
+UnionThreadLocal UnionThreadLocal_from_JSON(mixed json) {
+    return json;
+}
+
+class ThreadLocal {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ThreadLocal ThreadLocal_from_JSON(mixed json) {
+    ThreadLocal retval = ThreadLocal();
+
+    return retval;
+}
+
+typedef float|Throw UnionThrow;
+
+UnionThrow UnionThrow_from_JSON(mixed json) {
+    return json;
+}
+
+class Throw {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Throw Throw_from_JSON(mixed json) {
+    Throw retval = Throw();
+
+    return retval;
+}
+
+typedef float|Throws UnionThrows;
+
+UnionThrows UnionThrows_from_JSON(mixed json) {
+    return json;
+}
+
+class Throws {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Throws Throws_from_JSON(mixed json) {
+    Throws retval = Throws();
+
+    return retval;
+}
+
+typedef float|ToJson UnionToJson;
+
+UnionToJson UnionToJson_from_JSON(mixed json) {
+    return json;
+}
+
+class ToJson {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ToJson ToJson_from_JSON(mixed json) {
+    ToJson retval = ToJson();
+
+    return retval;
+}
+
+typedef float|TopLevelClass UnionTopLevel;
+
+UnionTopLevel UnionTopLevel_from_JSON(mixed json) {
+    return json;
+}
+
+class TopLevelClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TopLevelClass TopLevelClass_from_JSON(mixed json) {
+    TopLevelClass retval = TopLevelClass();
+
+    return retval;
+}
+
+typedef AnyClass|float UnionAnyUnion;
+
+UnionAnyUnion UnionAnyUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class AnyClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+AnyClass AnyClass_from_JSON(mixed json) {
+    AnyClass retval = AnyClass();
+
+    return retval;
+}
+
+typedef float|Array UnionArray;
+
+UnionArray UnionArray_from_JSON(mixed json) {
+    return json;
+}
+
+class Array {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Array Array_from_JSON(mixed json) {
+    Array retval = Array();
+
+    return retval;
+}
+
+typedef float|Auto UnionAuto;
+
+UnionAuto UnionAuto_from_JSON(mixed json) {
+    return json;
+}
+
+class Auto {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Auto Auto_from_JSON(mixed json) {
+    Auto retval = Auto();
+
+    return retval;
+}
+
+typedef BoolClass|float UnionBoolUnion;
+
+UnionBoolUnion UnionBoolUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class BoolClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+BoolClass BoolClass_from_JSON(mixed json) {
+    BoolClass retval = BoolClass();
+
+    return retval;
+}
+
+typedef float|Break UnionBreak;
+
+UnionBreak UnionBreak_from_JSON(mixed json) {
+    return json;
+}
+
+class Break {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Break Break_from_JSON(mixed json) {
+    Break retval = Break();
+
+    return retval;
+}
+
+typedef float|Case UnionCase;
+
+UnionCase UnionCase_from_JSON(mixed json) {
+    return json;
+}
+
+class Case {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Case Case_from_JSON(mixed json) {
+    Case retval = Case();
+
+    return retval;
+}
+
+typedef float|Catch UnionCatch;
+
+UnionCatch UnionCatch_from_JSON(mixed json) {
+    return json;
+}
+
+class Catch {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Catch Catch_from_JSON(mixed json) {
+    Catch retval = Catch();
+
+    return retval;
+}
+
+typedef float|Class UnionClass;
+
+UnionClass UnionClass_from_JSON(mixed json) {
+    return json;
+}
+
+class Class {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Class Class_from_JSON(mixed json) {
+    Class retval = Class();
+
+    return retval;
+}
+
+typedef float|Const UnionConst;
+
+UnionConst UnionConst_from_JSON(mixed json) {
+    return json;
+}
+
+class Const {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Const Const_from_JSON(mixed json) {
+    Const retval = Const();
+
+    return retval;
+}
+
+typedef float|Continue UnionContinue;
+
+UnionContinue UnionContinue_from_JSON(mixed json) {
+    return json;
+}
+
+class Continue {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Continue Continue_from_JSON(mixed json) {
+    Continue retval = Continue();
+
+    return retval;
+}
+
+typedef float|Default UnionDefault;
+
+UnionDefault UnionDefault_from_JSON(mixed json) {
+    return json;
+}
+
+class Default {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Default Default_from_JSON(mixed json) {
+    Default retval = Default();
+
+    return retval;
+}
+
+typedef float|Do UnionDo;
+
+UnionDo UnionDo_from_JSON(mixed json) {
+    return json;
+}
+
+class Do {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Do Do_from_JSON(mixed json) {
+    Do retval = Do();
+
+    return retval;
+}
+
+typedef float|Else UnionElse;
+
+UnionElse UnionElse_from_JSON(mixed json) {
+    return json;
+}
+
+class Else {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Else Else_from_JSON(mixed json) {
+    Else retval = Else();
+
+    return retval;
+}
+
+typedef float|Enum UnionEnum;
+
+UnionEnum UnionEnum_from_JSON(mixed json) {
+    return json;
+}
+
+class Enum {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Enum Enum_from_JSON(mixed json) {
+    Enum retval = Enum();
+
+    return retval;
+}
+
+typedef float|Extern UnionExtern;
+
+UnionExtern UnionExtern_from_JSON(mixed json) {
+    return json;
+}
+
+class Extern {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Extern Extern_from_JSON(mixed json) {
+    Extern retval = Extern();
+
+    return retval;
+}
+
+typedef float|FalseClass UnionFalseUnion;
+
+UnionFalseUnion UnionFalseUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class FalseClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+FalseClass FalseClass_from_JSON(mixed json) {
+    FalseClass retval = FalseClass();
+
+    return retval;
+}
+
+typedef float|Final UnionFinal;
+
+UnionFinal UnionFinal_from_JSON(mixed json) {
+    return json;
+}
+
+class Final {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Final Final_from_JSON(mixed json) {
+    Final retval = Final();
+
+    return retval;
+}
+
+typedef float|Float UnionFloat;
+
+UnionFloat UnionFloat_from_JSON(mixed json) {
+    return json;
+}
+
+class Float {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Float Float_from_JSON(mixed json) {
+    Float retval = Float();
+
+    return retval;
+}
+
+typedef float|For UnionFor;
+
+UnionFor UnionFor_from_JSON(mixed json) {
+    return json;
+}
+
+class For {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+For For_from_JSON(mixed json) {
+    For retval = For();
+
+    return retval;
+}
+
+typedef float|Foreach UnionForeach;
+
+UnionForeach UnionForeach_from_JSON(mixed json) {
+    return json;
+}
+
+class Foreach {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Foreach Foreach_from_JSON(mixed json) {
+    Foreach retval = Foreach();
+
+    return retval;
+}
+
+typedef float|Function UnionFunction;
+
+UnionFunction UnionFunction_from_JSON(mixed json) {
+    return json;
+}
+
+class Function {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Function Function_from_JSON(mixed json) {
+    Function retval = Function();
+
+    return retval;
+}
+
+typedef float|Global UnionGlobal;
+
+UnionGlobal UnionGlobal_from_JSON(mixed json) {
+    return json;
+}
+
+class Global {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Global Global_from_JSON(mixed json) {
+    Global retval = Global();
+
+    return retval;
+}
+
+typedef float|If UnionIf;
+
+UnionIf UnionIf_from_JSON(mixed json) {
+    return json;
+}
+
+class If {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+If If_from_JSON(mixed json) {
+    If retval = If();
+
+    return retval;
+}
+
+typedef float|Import UnionImport;
+
+UnionImport UnionImport_from_JSON(mixed json) {
+    return json;
+}
+
+class Import {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Import Import_from_JSON(mixed json) {
+    Import retval = Import();
+
+    return retval;
+}
+
+typedef float|Inline UnionInline;
+
+UnionInline UnionInline_from_JSON(mixed json) {
+    return json;
+}
+
+class Inline {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Inline Inline_from_JSON(mixed json) {
+    Inline retval = Inline();
+
+    return retval;
+}
+
+typedef float|Int UnionInt;
+
+UnionInt UnionInt_from_JSON(mixed json) {
+    return json;
+}
+
+class Int {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Int Int_from_JSON(mixed json) {
+    Int retval = Int();
+
+    return retval;
+}
+
+typedef float|Lambda UnionLambda;
+
+UnionLambda UnionLambda_from_JSON(mixed json) {
+    return json;
+}
+
+class Lambda {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Lambda Lambda_from_JSON(mixed json) {
+    Lambda retval = Lambda();
+
+    return retval;
+}
+
+typedef float|NoneClass UnionNoneUnion;
+
+UnionNoneUnion UnionNoneUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class NoneClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NoneClass NoneClass_from_JSON(mixed json) {
+    NoneClass retval = NoneClass();
+
+    return retval;
+}
+
+typedef float|NullClass UnionNullUnion;
+
+UnionNullUnion UnionNullUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class NullClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NullClass NullClass_from_JSON(mixed json) {
+    NullClass retval = NullClass();
+
+    return retval;
+}
+
+typedef float|Object UnionObject;
+
+UnionObject UnionObject_from_JSON(mixed json) {
+    return json;
+}
+
+class Object {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Object Object_from_JSON(mixed json) {
+    Object retval = Object();
+
+    return retval;
+}
+
+typedef float|Optional UnionOptional;
+
+UnionOptional UnionOptional_from_JSON(mixed json) {
+    return json;
+}
+
+class Optional {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Optional Optional_from_JSON(mixed json) {
+    Optional retval = Optional();
+
+    return retval;
+}
+
+typedef float|Private UnionPrivate;
+
+UnionPrivate UnionPrivate_from_JSON(mixed json) {
+    return json;
+}
+
+class Private {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Private Private_from_JSON(mixed json) {
+    Private retval = Private();
+
+    return retval;
+}
+
+typedef float|Protected UnionProtected;
+
+UnionProtected UnionProtected_from_JSON(mixed json) {
+    return json;
+}
+
+class Protected {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Protected Protected_from_JSON(mixed json) {
+    Protected retval = Protected();
+
+    return retval;
+}
+
+typedef float|ProtocolClass UnionProtocolUnion;
+
+UnionProtocolUnion UnionProtocolUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class ProtocolClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ProtocolClass ProtocolClass_from_JSON(mixed json) {
+    ProtocolClass retval = ProtocolClass();
+
+    return retval;
+}
+
+typedef float|Public UnionPublic;
+
+UnionPublic UnionPublic_from_JSON(mixed json) {
+    return json;
+}
+
+class Public {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Public Public_from_JSON(mixed json) {
+    Public retval = Public();
+
+    return retval;
+}
+
+typedef float|Return UnionReturn;
+
+UnionReturn UnionReturn_from_JSON(mixed json) {
+    return json;
+}
+
+class Return {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Return Return_from_JSON(mixed json) {
+    Return retval = Return();
+
+    return retval;
+}
+
+typedef float|SelfClass UnionSelfUnion;
+
+UnionSelfUnion UnionSelfUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class SelfClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SelfClass SelfClass_from_JSON(mixed json) {
+    SelfClass retval = SelfClass();
+
+    return retval;
+}
+
+typedef float|Static UnionStatic;
+
+UnionStatic UnionStatic_from_JSON(mixed json) {
+    return json;
+}
+
+class Static {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Static Static_from_JSON(mixed json) {
+    Static retval = Static();
+
+    return retval;
+}
+
+typedef float|String UnionString;
+
+UnionString UnionString_from_JSON(mixed json) {
+    return json;
+}
+
+class String {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+String String_from_JSON(mixed json) {
+    String retval = String();
+
+    return retval;
+}
+
+typedef float|Switch UnionSwitch;
+
+UnionSwitch UnionSwitch_from_JSON(mixed json) {
+    return json;
+}
+
+class Switch {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Switch Switch_from_JSON(mixed json) {
+    Switch retval = Switch();
+
+    return retval;
+}
+
+typedef float|TrueClass UnionTrueUnion;
+
+UnionTrueUnion UnionTrueUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class TrueClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TrueClass TrueClass_from_JSON(mixed json) {
+    TrueClass retval = TrueClass();
+
+    return retval;
+}
+
+typedef float|TypeClass UnionTypeUnion;
+
+UnionTypeUnion UnionTypeUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class TypeClass {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TypeClass TypeClass_from_JSON(mixed json) {
+    TypeClass retval = TypeClass();
+
+    return retval;
+}
+
+typedef float|Typedef UnionTypedef;
+
+UnionTypedef UnionTypedef_from_JSON(mixed json) {
+    return json;
+}
+
+class Typedef {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Typedef Typedef_from_JSON(mixed json) {
+    Typedef retval = Typedef();
+
+    return retval;
+}
+
+typedef float|Typeof UnionTypeof;
+
+UnionTypeof UnionTypeof_from_JSON(mixed json) {
+    return json;
+}
+
+class Typeof {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Typeof Typeof_from_JSON(mixed json) {
+    Typeof retval = Typeof();
+
+    return retval;
+}
+
+typedef float|Void UnionVoid;
+
+UnionVoid UnionVoid_from_JSON(mixed json) {
+    return json;
+}
+
+class Void {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Void Void_from_JSON(mixed json) {
+    Void retval = Void();
+
+    return retval;
+}
+
+typedef float|While UnionWhile;
+
+UnionWhile UnionWhile_from_JSON(mixed json) {
+    return json;
+}
+
+class While {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+While While_from_JSON(mixed json) {
+    While retval = While();
+
+    return retval;
+}
+
+typedef float|Transient UnionTransient;
+
+UnionTransient UnionTransient_from_JSON(mixed json) {
+    return json;
+}
+
+class Transient {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Transient Transient_from_JSON(mixed json) {
+    Transient retval = Transient();
+
+    return retval;
+}
+
+typedef float|True UnionTrue;
+
+UnionTrue UnionTrue_from_JSON(mixed json) {
+    return json;
+}
+
+class True {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+True True_from_JSON(mixed json) {
+    True retval = True();
+
+    return retval;
+}
+
+typedef float|Try UnionTry;
+
+UnionTry UnionTry_from_JSON(mixed json) {
+    return json;
+}
+
+class Try {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Try Try_from_JSON(mixed json) {
+    Try retval = Try();
+
+    return retval;
+}
+
+typedef float|Type UnionType;
+
+UnionType UnionType_from_JSON(mixed json) {
+    return json;
+}
+
+class Type {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Type Type_from_JSON(mixed json) {
+    Type retval = Type();
+
+    return retval;
+}
+
+typedef float|Typealias UnionTypealias;
+
+UnionTypealias UnionTypealias_from_JSON(mixed json) {
+    return json;
+}
+
+class Typealias {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Typealias Typealias_from_JSON(mixed json) {
+    Typealias retval = Typealias();
+
+    return retval;
+}
+
+typedef float|Typeid UnionTypeid;
+
+UnionTypeid UnionTypeid_from_JSON(mixed json) {
+    return json;
+}
+
+class Typeid {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Typeid Typeid_from_JSON(mixed json) {
+    Typeid retval = Typeid();
+
+    return retval;
+}
+
+typedef float|Typename UnionTypename;
+
+UnionTypename UnionTypename_from_JSON(mixed json) {
+    return json;
+}
+
+class Typename {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Typename Typename_from_JSON(mixed json) {
+    Typename retval = Typename();
+
+    return retval;
+}
+
+typedef float|Uint UnionUint;
+
+UnionUint UnionUint_from_JSON(mixed json) {
+    return json;
+}
+
+class Uint {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Uint Uint_from_JSON(mixed json) {
+    Uint retval = Uint();
+
+    return retval;
+}
+
+typedef float|Ulong UnionUlong;
+
+UnionUlong UnionUlong_from_JSON(mixed json) {
+    return json;
+}
+
+class Ulong {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Ulong Ulong_from_JSON(mixed json) {
+    Ulong retval = Ulong();
+
+    return retval;
+}
+
+typedef float|Unchecked UnionUnchecked;
+
+UnionUnchecked UnionUnchecked_from_JSON(mixed json) {
+    return json;
+}
+
+class Unchecked {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unchecked Unchecked_from_JSON(mixed json) {
+    Unchecked retval = Unchecked();
+
+    return retval;
+}
+
+typedef float|Undefined UnionUndefined;
+
+UnionUndefined UnionUndefined_from_JSON(mixed json) {
+    return json;
+}
+
+class Undefined {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Undefined Undefined_from_JSON(mixed json) {
+    Undefined retval = Undefined();
+
+    return retval;
+}
+
+typedef float|Union UnionUnionUnion;
+
+UnionUnionUnion UnionUnionUnion_from_JSON(mixed json) {
+    return json;
+}
+
+class Union {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Union Union_from_JSON(mixed json) {
+    Union retval = Union();
+
+    return retval;
+}
+
+typedef float|Unowned UnionUnowned;
+
+UnionUnowned UnionUnowned_from_JSON(mixed json) {
+    return json;
+}
+
+class Unowned {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unowned Unowned_from_JSON(mixed json) {
+    Unowned retval = Unowned();
+
+    return retval;
+}
+
+typedef float|Unsafe UnionUnsafe;
+
+UnionUnsafe UnionUnsafe_from_JSON(mixed json) {
+    return json;
+}
+
+class Unsafe {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unsafe Unsafe_from_JSON(mixed json) {
+    Unsafe retval = Unsafe();
+
+    return retval;
+}
+
+typedef float|Unsigned UnionUnsigned;
+
+UnionUnsigned UnionUnsigned_from_JSON(mixed json) {
+    return json;
+}
+
+class Unsigned {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unsigned Unsigned_from_JSON(mixed json) {
+    Unsigned retval = Unsigned();
+
+    return retval;
+}
+
+typedef float|Ushort UnionUshort;
+
+UnionUshort UnionUshort_from_JSON(mixed json) {
+    return json;
+}
+
+class Ushort {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Ushort Ushort_from_JSON(mixed json) {
+    Ushort retval = Ushort();
+
+    return retval;
+}
+
+typedef float|Using UnionUsing;
+
+UnionUsing UnionUsing_from_JSON(mixed json) {
+    return json;
+}
+
+class Using {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Using Using_from_JSON(mixed json) {
+    Using retval = Using();
+
+    return retval;
+}
+
+typedef float|Var UnionVar;
+
+UnionVar UnionVar_from_JSON(mixed json) {
+    return json;
+}
+
+class Var {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Var Var_from_JSON(mixed json) {
+    Var retval = Var();
+
+    return retval;
+}
+
+typedef float|Virtual UnionVirtual;
+
+UnionVirtual UnionVirtual_from_JSON(mixed json) {
+    return json;
+}
+
+class Virtual {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Virtual Virtual_from_JSON(mixed json) {
+    Virtual retval = Virtual();
+
+    return retval;
+}
+
+typedef float|Volatile UnionVolatile;
+
+UnionVolatile UnionVolatile_from_JSON(mixed json) {
+    return json;
+}
+
+class Volatile {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Volatile Volatile_from_JSON(mixed json) {
+    Volatile retval = Volatile();
+
+    return retval;
+}
+
+typedef float|WcharT UnionWcharT;
+
+UnionWcharT UnionWcharT_from_JSON(mixed json) {
+    return json;
+}
+
+class WcharT {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+WcharT WcharT_from_JSON(mixed json) {
+    WcharT retval = WcharT();
+
+    return retval;
+}
+
+typedef float|Weak UnionWeak;
+
+UnionWeak UnionWeak_from_JSON(mixed json) {
+    return json;
+}
+
+class Weak {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Weak Weak_from_JSON(mixed json) {
+    Weak retval = Weak();
+
+    return retval;
+}
+
+typedef float|Where UnionWhere;
+
+UnionWhere UnionWhere_from_JSON(mixed json) {
+    return json;
+}
+
+class Where {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Where Where_from_JSON(mixed json) {
+    Where retval = Where();
+
+    return retval;
+}
+
+typedef float|WillSet UnionWillSet;
+
+UnionWillSet UnionWillSet_from_JSON(mixed json) {
+    return json;
+}
+
+class WillSet {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+WillSet WillSet_from_JSON(mixed json) {
+    WillSet retval = WillSet();
+
+    return retval;
+}
+
+typedef float|With UnionWith;
+
+UnionWith UnionWith_from_JSON(mixed json) {
+    return json;
+}
+
+class With {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+With With_from_JSON(mixed json) {
+    With retval = With();
+
+    return retval;
+}
+
+typedef float|Xor UnionXor;
+
+UnionXor UnionXor_from_JSON(mixed json) {
+    return json;
+}
+
+class Xor {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Xor Xor_from_JSON(mixed json) {
+    Xor retval = Xor();
+
+    return retval;
+}
+
+typedef float|XorEq UnionXorEq;
+
+UnionXorEq UnionXorEq_from_JSON(mixed json) {
+    return json;
+}
+
+class XorEq {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+XorEq XorEq_from_JSON(mixed json) {
+    XorEq retval = XorEq();
+
+    return retval;
+}
+
+typedef float|Yes UnionYes;
+
+UnionYes UnionYes_from_JSON(mixed json) {
+    return json;
+}
+
+class Yes {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Yes Yes_from_JSON(mixed json) {
+    Yes retval = Yes();
+
+    return retval;
+}
+
+typedef float|Yield UnionYield;
+
+UnionYield UnionYield_from_JSON(mixed json) {
+    return json;
+}
+
+class Yield {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Yield Yield_from_JSON(mixed json) {
+    Yield retval = Yield();
+
+    return retval;
+}
diff --git a/base/schema-pike/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.pmod
index d623a00..2fcee21 100644
--- a/base/schema-pike/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/nullable-optional-one-of.schema/default/TopLevel.pmod
@@ -39,3 +39,7 @@ enum Kind {
     ONE = "one", // json: "one"
     TWO = "two", // json: "two"
 }
+
+Kind Kind_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/optional-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/optional-enum.schema/default/TopLevel.pmod
index d637397..177225d 100644
--- a/base/schema-pike/test/inputs/schema/optional-enum.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/optional-enum.schema/default/TopLevel.pmod
@@ -39,3 +39,7 @@ enum Shortcut {
     HIDDEN = "hidden",   // json: "hidden"
     VISIBLE = "visible", // json: "visible"
 }
+
+Shortcut Shortcut_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/renaming-bug.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/renaming-bug.schema/default/TopLevel.pmod
index c8bc56f..3fca9ad 100644
--- a/base/schema-pike/test/inputs/schema/renaming-bug.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/renaming-bug.schema/default/TopLevel.pmod
@@ -355,6 +355,10 @@ enum Axis {
     ZX = "ZX", // json: "ZX"
 }
 
+Axis Axis_from_JSON(mixed json) {
+    return json;
+}
+
 enum Name {
     TRUCK = "truck",         // json: "truck"
     BUS = "bus",             // json: "bus"
@@ -366,3 +370,7 @@ enum Name {
     JEEP = "Jeep",           // json: "Jeep"
     TROLLEY = "Trolley",     // json: "Trolley"
 }
+
+Name Name_from_JSON(mixed json) {
+    return json;
+}
diff --git a/head/schema-pike/test/inputs/schema/top-level-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/top-level-enum.schema/default/TopLevel.pmod
new file mode 100644
index 0000000..e6b16a1
--- /dev/null
+++ b/head/schema-pike/test/inputs/schema/top-level-enum.schema/default/TopLevel.pmod
@@ -0,0 +1,23 @@
+// 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.
+
+enum TopLevel {
+    ONE = "one",     // json: "one"
+    THREE = "three", // json: "three"
+    TWO = "two",     // json: "two"
+}
+
+TopLevel TopLevel_from_JSON(mixed json) {
+    return json;
+}
diff --git a/base/schema-pike/test/inputs/schema/vega-lite.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/vega-lite.schema/default/TopLevel.pmod
index 141c32f..99a12a1 100644
--- a/base/schema-pike/test/inputs/schema/vega-lite.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/vega-lite.schema/default/TopLevel.pmod
@@ -142,12 +142,20 @@ enum Contains {
     PADDING = "padding", // json: "padding"
 }
 
+Contains Contains_from_JSON(mixed json) {
+    return json;
+}
+
 enum AutosizeType {
     PAD = "pad",                 // json: "pad"
     FIT = "fit",                 // json: "fit"
     AUTOSIZE_TYPE_NONE = "none", // json: "none"
 }
 
+AutosizeType AutosizeType_from_JSON(mixed json) {
+    return json;
+}
+
 // Vega-Lite configuration object.  This property can only be defined at the top-level of a
 // specification.
 class Config {
@@ -408,12 +416,20 @@ enum HorizontalAlign {
     HORIZONTAL_ALIGN_CENTER = "center", // json: "center"
 }
 
+HorizontalAlign HorizontalAlign_from_JSON(mixed json) {
+    return json;
+}
+
 enum VerticalAlign {
     VERTICAL_ALIGN_TOP = "top",       // json: "top"
     VERTICAL_ALIGN_MIDDLE = "middle", // json: "middle"
     VERTICAL_ALIGN_BOTTOM = "bottom", // json: "bottom"
 }
 
+VerticalAlign VerticalAlign_from_JSON(mixed json) {
+    return json;
+}
+
 enum Cursor {
     CURSOR_AUTO = "auto",            // json: "auto"
     DEFAULT = "default",             // json: "default"
@@ -453,11 +469,19 @@ enum Cursor {
     GRABBING = "grabbing",           // json: "grabbing"
 }
 
+Cursor Cursor_from_JSON(mixed json) {
+    return json;
+}
+
 enum FontStyle {
     FONT_STYLE_NORMAL = "normal", // json: "normal"
     ITALIC = "italic",            // json: "italic"
 }
 
+FontStyle FontStyle_from_JSON(mixed json) {
+    return json;
+}
+
 // The font weight (e.g., `"bold"`).
 //
 // Font weight for title text.
@@ -472,6 +496,10 @@ enum FontWeight {
     BOLD = "bold",                 // json: "bold"
 }
 
+FontWeight FontWeight_from_JSON(mixed json) {
+    return json;
+}
+
 enum Interpolate {
     INTERPOLATE_LINEAR = "linear",       // json: "linear"
     LINEAR_CLOSED = "linear-closed",     // json: "linear-closed"
@@ -488,11 +516,19 @@ enum Interpolate {
     MONOTONE = "monotone",               // json: "monotone"
 }
 
+Interpolate Interpolate_from_JSON(mixed json) {
+    return json;
+}
+
 enum Orient {
     HORIZONTAL = "horizontal", // json: "horizontal"
     VERTICAL = "vertical",     // json: "vertical"
 }
 
+Orient Orient_from_JSON(mixed json) {
+    return json;
+}
+
 // Axis configuration, which determines default properties for all `x` and `y`
 // [axes](axis.html). For a full list of axis configuration options, please see the
 // [corresponding section of the axis documentation](axis.html#config).
@@ -664,6 +700,10 @@ enum LabelOverlapEnum {
     GREEDY = "greedy", // json: "greedy"
 }
 
+LabelOverlapEnum LabelOverlapEnum_from_JSON(mixed json) {
+    return json;
+}
+
 // Font weight of the title. (e.g., `"bold"`).
 //
 // The font weight of the legend title.
@@ -940,10 +980,18 @@ enum FieldTitle {
     PLAIN = "plain",           // json: "plain"
 }
 
+FieldTitle FieldTitle_from_JSON(mixed json) {
+    return json;
+}
+
 enum InvalidValues {
     FILTER = "filter", // json: "filter"
 }
 
+InvalidValues InvalidValues_from_JSON(mixed json) {
+    return json;
+}
+
 // Legend configuration, which determines default properties for all [legends](legend.html).
 // For a full list of legend configuration options, please see the [corresponding section of
 // in the legend documentation](legend.html#config).
@@ -1082,6 +1130,10 @@ enum LegendOrient {
     LEGEND_ORIENT_NONE = "none",   // json: "none"
 }
 
+LegendOrient LegendOrient_from_JSON(mixed json) {
+    return json;
+}
+
 // The default visualization padding, in pixels, from the edge of the visualization canvas
 // to the data rectangle.  If a number, specifies padding for all sides.
 // If an object, the value should have the format `{"left": 5, "top": 5, "right": 5,
@@ -1216,6 +1268,10 @@ enum VgProjectionType {
     TRANSVERSE_MERCATOR = "transverseMercator",     // json: "transverseMercator"
 }
 
+VgProjectionType VgProjectionType_from_JSON(mixed json) {
+    return json;
+}
+
 typedef array(PrecisionValue)|VgScheme RangeConfigValue;
 
 RangeConfigValue RangeConfigValue_from_JSON(mixed json) {
@@ -1409,11 +1465,19 @@ enum BindEnum {
     SCALES = "scales", // json: "scales"
 }
 
+BindEnum BindEnum_from_JSON(mixed json) {
+    return json;
+}
+
 enum Empty {
     ALL = "all",         // json: "all"
     EMPTY_NONE = "none", // json: "none"
 }
 
+Empty Empty_from_JSON(mixed json) {
+    return json;
+}
+
 enum SingleDefChannel {
     X = "x",                              // json: "x"
     Y = "y",                              // json: "y"
@@ -1430,6 +1494,10 @@ enum SingleDefChannel {
     HREF = "href",                        // json: "href"
 }
 
+SingleDefChannel SingleDefChannel_from_JSON(mixed json) {
+    return json;
+}
+
 // An interval selection also adds a rectangle mark to depict the
 // extents of the interval. The `mark` property can be used to customize the
 // appearance of the mark.
@@ -1477,6 +1545,10 @@ enum SelectionResolution {
     INTERSECT = "intersect", // json: "intersect"
 }
 
+SelectionResolution SelectionResolution_from_JSON(mixed json) {
+    return json;
+}
+
 // When truthy, allows a user to interactively move an interval selection
 // back-and-forth. Can be `true`, `false` (to disable panning), or a
 // [Vega event stream definition](https://vega.github.io/vega/docs/event-streams/)
@@ -1637,6 +1709,10 @@ enum StackOffset {
     NORMALIZE = "normalize",        // json: "normalize"
 }
 
+StackOffset StackOffset_from_JSON(mixed json) {
+    return json;
+}
+
 class VgMarkConfig {
     HorizontalAlign|mixed align;              // json: "align"
     float|mixed           angle;              // json: "angle"
@@ -2019,6 +2095,10 @@ enum Anchor {
     END = "end",              // json: "end"
 }
 
+Anchor Anchor_from_JSON(mixed json) {
+    return json;
+}
+
 enum TitleOrient {
     ORIENT_TOP = "top",       // json: "top"
     ORIENT_BOTTOM = "bottom", // json: "bottom"
@@ -2026,6 +2106,10 @@ enum TitleOrient {
     ORIENT_RIGHT = "right",   // json: "right"
 }
 
+TitleOrient TitleOrient_from_JSON(mixed json) {
+    return json;
+}
+
 // Default properties for [single view plots](spec.html#single).
 class ViewConfig {
     bool|mixed         clip;               // json: "clip"
@@ -2153,6 +2237,10 @@ enum ParseEnum {
     PARSE_AUTO = "auto", // json: "auto"
 }
 
+ParseEnum ParseEnum_from_JSON(mixed json) {
+    return json;
+}
+
 enum DataFormatType {
     CSV = "csv",           // json: "csv"
     TSV = "tsv",           // json: "tsv"
@@ -2160,6 +2248,10 @@ enum DataFormatType {
     TOPOJSON = "topojson", // json: "topojson"
 }
 
+DataFormatType DataFormatType_from_JSON(mixed json) {
+    return json;
+}
+
 // The full data set, included inline. This can be an array of objects or primitive values
 // or a string.
 // Arrays of primitive values are ingested as objects with a `data` property. Strings are
@@ -2351,6 +2443,10 @@ enum AggregateOp {
     VARIANCEP = "variancep", // json: "variancep"
 }
 
+AggregateOp AggregateOp_from_JSON(mixed json) {
+    return json;
+}
+
 typedef BinParams|bool Bin;
 
 Bin Bin_from_JSON(mixed json) {
@@ -2687,6 +2783,10 @@ enum TimeUnit {
     UTCSECONDSMILLISECONDS = "utcsecondsmilliseconds",                           // json: "utcsecondsmilliseconds"
 }
 
+TimeUnit TimeUnit_from_JSON(mixed json) {
+    return json;
+}
+
 // A constant value in visual domain (e.g., `"red"` / "#0099ff" for color, values between
 // `0` to `1` for opacity).
 //
@@ -2779,6 +2879,10 @@ enum RepeatEnum {
     REPEAT_COLUMN = "column", // json: "column"
 }
 
+RepeatEnum RepeatEnum_from_JSON(mixed json) {
+    return json;
+}
+
 // Properties of a legend or boolean flag for determining whether to show it.
 class Legend {
     float|mixed              entry_padding; // json: "entryPadding"
@@ -2832,6 +2936,10 @@ enum LegendType {
     GRADIENT = "gradient", // json: "gradient"
 }
 
+LegendType LegendType_from_JSON(mixed json) {
+    return json;
+}
+
 typedef DateTime|float|string LegendValue;
 
 LegendValue LegendValue_from_JSON(mixed json) {
@@ -2957,6 +3065,10 @@ enum Domain {
     UNAGGREGATED = "unaggregated", // json: "unaggregated"
 }
 
+Domain Domain_from_JSON(mixed json) {
+    return json;
+}
+
 // The interpolation method for range values. By default, a general interpolator for
 // numbers, dates, strings and colors (in RGB space) is used. For color ranges, this
 // property allows interpolation in alternative color spaces. Legal values include `rgb`,
@@ -3005,6 +3117,10 @@ enum InterpolateParamsType {
     CUBEHELIX_LONG = "cubehelix-long", // json: "cubehelix-long"
 }
 
+InterpolateParamsType InterpolateParamsType_from_JSON(mixed json) {
+    return json;
+}
+
 // Extending the domain so that it starts and ends on nice round values. This method
 // typically modifies the scale’s domain, and may only extend the bounds to the nearest
 // round value. Nicing is useful if the domain is computed from data and may be irregular.
@@ -3063,6 +3179,10 @@ enum NiceTime {
     NICE_TIME_YEAR = "year",   // json: "year"
 }
 
+NiceTime NiceTime_from_JSON(mixed json) {
+    return json;
+}
+
 // The range of the scale. One of:
 //
 // - A string indicating a [pre-defined named scale range](scale.html#range-config) (e.g.,
@@ -3144,6 +3264,10 @@ enum ScaleType {
     BAND = "band",                  // json: "band"
 }
 
+ScaleType ScaleType_from_JSON(mixed json) {
+    return json;
+}
+
 typedef SortEnum|SortField SortUnion;
 
 SortUnion SortUnion_from_JSON(mixed json) {
@@ -3181,6 +3305,10 @@ enum SortEnum {
     DESCENDING = "descending", // json: "descending"
 }
 
+SortEnum SortEnum_from_JSON(mixed json) {
+    return json;
+}
+
 enum Type {
     QUANTITATIVE = "quantitative", // json: "quantitative"
     TYPE_ORDINAL = "ordinal",      // json: "ordinal"
@@ -3191,6 +3319,10 @@ enum Type {
     GEOJSON = "geojson",           // json: "geojson"
 }
 
+Type Type_from_JSON(mixed json) {
+    return json;
+}
+
 // A constant value in visual domain (e.g., `"red"` / "#0099ff" for color, values between
 // `0` to `1` for opacity).
 //
@@ -4112,6 +4244,10 @@ enum Mark {
     GEOSHAPE = "geoshape", // json: "geoshape"
 }
 
+Mark Mark_from_JSON(mixed json) {
+    return json;
+}
+
 // An object defining properties of geographic projection.
 //
 // Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or
@@ -4244,6 +4380,10 @@ enum ResolveMode {
     SHARED = "shared",           // json: "shared"
 }
 
+ResolveMode ResolveMode_from_JSON(mixed json) {
+    return json;
+}
+
 class LegendResolveMap {
     ResolveMode|mixed color;   // json: "color"
     ResolveMode|mixed opacity; // json: "opacity"
@@ -4373,6 +4513,10 @@ enum SelectionDefType {
     INTERVAL = "interval", // json: "interval"
 }
 
+SelectionDefType SelectionDefType_from_JSON(mixed json) {
+    return json;
+}
+
 typedef string|TitleParams Title;
 
 Title Title_from_JSON(mixed json) {
