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 7cc8e11..48a250a 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
@@ -134,6 +134,7 @@ class Reactable {
 Reactable Reactable_from_JSON(mixed json) {
     Reactable retval = Reactable();
 
+    if (json["viewerCanReact"] != Standards.JSON.true && json["viewerCanReact"] != Standards.JSON.false) error("Expected bool");
     retval.viewer_can_react = json["viewerCanReact"];
     if (!has_index(json, "reactionGroups")) error("Missing required property");
     retval.reaction_groups = json["reactionGroups"];
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 9ea3d9f..fc5f3f7 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
@@ -251,6 +251,7 @@ Parameter Parameter_from_JSON(mixed json) {
     retval.format = Type_from_JSON(json["format"]);
     retval.in = json["in"];
     retval.name = json["name"];
+    if (json["required"] != Standards.JSON.true && json["required"] != Standards.JSON.false) error("Expected bool");
     retval.required = json["required"];
     retval.type = Type_from_JSON(json["type"]);
 
diff --git a/base/pike/test/inputs/json/misc/0a358.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/0a358.json/default/TopLevel.pmod
index ad7bf2a..33743f9 100644
--- a/base/pike/test/inputs/json/misc/0a358.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/0a358.json/default/TopLevel.pmod
@@ -44,6 +44,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.limit = json["limit"];
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
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 571bb48..baf8fd0 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
@@ -53,6 +53,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.org = json["org"];
     retval.payload = json["payload"];
     retval.repo = json["repo"];
+    if (json["public"] != Standards.JSON.true && json["public"] != Standards.JSON.false) error("Expected bool");
     retval.top_level_public = json["public"];
     retval.type = Type_from_JSON(json["type"]);
 
@@ -177,6 +178,7 @@ Commit Commit_from_JSON(mixed json) {
     Commit retval = Commit();
 
     retval.author = json["author"];
+    if (json["distinct"] != Standards.JSON.true && json["distinct"] != Standards.JSON.false) error("Expected bool");
     retval.distinct = json["distinct"];
     retval.message = json["message"];
     retval.sha = json["sha"];
@@ -322,11 +324,14 @@ PullRequest PullRequest_from_JSON(mixed json) {
     retval.id = json["id"];
     retval.issue_url = json["issue_url"];
     retval.links = json["_links"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
+    if (json["maintainer_can_modify"] != Standards.JSON.true && json["maintainer_can_modify"] != Standards.JSON.false) error("Expected bool");
     retval.maintainer_can_modify = json["maintainer_can_modify"];
     retval.merge_commit_sha = json["merge_commit_sha"];
     retval.mergeable = json["mergeable"];
     retval.mergeable_state = json["mergeable_state"];
+    if (json["merged"] != Standards.JSON.true && json["merged"] != Standards.JSON.false) error("Expected bool");
     retval.merged = json["merged"];
     retval.merged_at = json["merged_at"];
     retval.merged_by = json["merged_by"];
@@ -548,6 +553,7 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.description = json["description"];
     retval.downloads_url = json["downloads_url"];
     retval.events_url = json["events_url"];
+    if (json["fork"] != Standards.JSON.true && json["fork"] != Standards.JSON.false) error("Expected bool");
     retval.fork = json["fork"];
     retval.forks = json["forks"];
     retval.forks_count = json["forks_count"];
@@ -557,10 +563,15 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.git_refs_url = json["git_refs_url"];
     retval.git_tags_url = json["git_tags_url"];
     retval.git_url = json["git_url"];
+    if (json["has_downloads"] != Standards.JSON.true && json["has_downloads"] != Standards.JSON.false) error("Expected bool");
     retval.has_downloads = json["has_downloads"];
+    if (json["has_issues"] != Standards.JSON.true && json["has_issues"] != Standards.JSON.false) error("Expected bool");
     retval.has_issues = json["has_issues"];
+    if (json["has_pages"] != Standards.JSON.true && json["has_pages"] != Standards.JSON.false) error("Expected bool");
     retval.has_pages = json["has_pages"];
+    if (json["has_projects"] != Standards.JSON.true && json["has_projects"] != Standards.JSON.false) error("Expected bool");
     retval.has_projects = json["has_projects"];
+    if (json["has_wiki"] != Standards.JSON.true && json["has_wiki"] != Standards.JSON.false) error("Expected bool");
     retval.has_wiki = json["has_wiki"];
     retval.homepage = json["homepage"];
     retval.hooks_url = json["hooks_url"];
@@ -584,6 +595,7 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.pulls_url = json["pulls_url"];
     retval.pushed_at = json["pushed_at"];
     retval.releases_url = json["releases_url"];
+    if (json["private"] != Standards.JSON.true && json["private"] != Standards.JSON.false) error("Expected bool");
     retval.repo_private = json["private"];
     retval.size = json["size"];
     retval.ssh_url = json["ssh_url"];
@@ -663,6 +675,7 @@ MergedBy MergedBy_from_JSON(mixed json) {
     retval.organizations_url = json["organizations_url"];
     retval.received_events_url = json["received_events_url"];
     retval.repos_url = json["repos_url"];
+    if (json["site_admin"] != Standards.JSON.true && json["site_admin"] != Standards.JSON.false) error("Expected bool");
     retval.site_admin = json["site_admin"];
     retval.starred_url = json["starred_url"];
     retval.subscriptions_url = json["subscriptions_url"];
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 57c122e..584da1b 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
@@ -199,8 +199,11 @@ class FavMovie {
 FavMovie FavMovie_from_JSON(mixed json) {
     FavMovie retval = FavMovie();
 
+    if (json["follow"] != Standards.JSON.true && json["follow"] != Standards.JSON.false) error("Expected bool");
     retval.follow = json["follow"];
+    if (json["star"] != Standards.JSON.true && json["star"] != Standards.JSON.false) error("Expected bool");
     retval.star = json["star"];
+    if (json["watched"] != Standards.JSON.true && json["watched"] != Standards.JSON.false) error("Expected bool");
     retval.watched = json["watched"];
 
     return retval;
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 49865c7..b6d6acb 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
@@ -118,6 +118,7 @@ Object Object_from_JSON(mixed json) {
 
     retval.caucus = json["caucus"];
     retval.congress_numbers = json["congress_numbers"];
+    if (json["current"] != Standards.JSON.true && json["current"] != Standards.JSON.false) error("Expected bool");
     retval.current = json["current"];
     retval.description = json["description"];
     retval.district = json["district"];
diff --git a/base/pike/test/inputs/json/misc/2465e.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/2465e.json/default/TopLevel.pmod
index f5b6ce2..71fbe4a 100644
--- a/base/pike/test/inputs/json/misc/2465e.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/2465e.json/default/TopLevel.pmod
@@ -278,6 +278,7 @@ Parameter Parameter_from_JSON(mixed json) {
     retval.format = json["format"];
     retval.in = json["in"];
     retval.name = json["name"];
+    if (json["required"] != Standards.JSON.true && json["required"] != Standards.JSON.false) error("Expected bool");
     retval.required = json["required"];
     retval.type = json["type"];
 
diff --git a/base/pike/test/inputs/json/misc/26c9c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/26c9c.json/default/TopLevel.pmod
index fe8dacb..d4c5f83 100644
--- a/base/pike/test/inputs/json/misc/26c9c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/26c9c.json/default/TopLevel.pmod
@@ -161,18 +161,22 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -352,6 +356,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -624,6 +629,7 @@ class Order {
 Order Order_from_JSON(mixed json) {
     Order retval = Order();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.column_field_name = json["columnFieldName"];
 
@@ -665,6 +671,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
@@ -748,6 +755,7 @@ class OrderBy {
 OrderBy OrderBy_from_JSON(mixed json) {
     OrderBy retval = OrderBy();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.expression = json["expression"];
 
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 c79a63e..0f62aa6 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
@@ -230,6 +230,7 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     if (!has_index(json, "author_flair_css_class")) error("Missing required property");
@@ -238,10 +239,15 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
@@ -249,18 +255,24 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     if (!has_index(json, "link_flair_css_class")) error("Missing required property");
     retval.link_flair_css_class = json["link_flair_css_class"];
     if (!has_index(json, "link_flair_text")) error("Missing required property");
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     if (!has_index(json, "media")) error("Missing required property");
     retval.media = json["media"];
@@ -269,13 +281,16 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
@@ -284,7 +299,9 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.selftext = json["selftext"];
     if (!has_index(json, "selftext_html")) error("Missing required property");
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -301,6 +318,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
@@ -448,6 +466,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
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 5417f07..806fde6 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
@@ -230,16 +230,22 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     retval.author_flair_css_class = json["author_flair_css_class"];
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
@@ -248,14 +254,19 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.downs = json["downs"];
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     retval.link_flair_css_class = json["link_flair_css_class"];
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     retval.media = json["media"];
     retval.media_embed = json["media_embed"];
@@ -263,13 +274,16 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
@@ -277,7 +291,9 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.selftext = json["selftext"];
     if (!has_index(json, "selftext_html")) error("Missing required property");
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -295,6 +311,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
@@ -365,6 +382,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
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 a4e680c..3cf733d 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
@@ -123,6 +123,7 @@ Object Object_from_JSON(mixed json) {
     if (!has_index(json, "caucus")) error("Missing required property");
     retval.caucus = Party_from_JSON(json["caucus"]);
     retval.congress_numbers = json["congress_numbers"];
+    if (json["current"] != Standards.JSON.true && json["current"] != Standards.JSON.false) error("Expected bool");
     retval.current = json["current"];
     retval.description = json["description"];
     retval.district = json["district"];
diff --git a/base/pike/test/inputs/json/misc/32d5c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/32d5c.json/default/TopLevel.pmod
index b74b21f..a03774c 100644
--- a/base/pike/test/inputs/json/misc/32d5c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/32d5c.json/default/TopLevel.pmod
@@ -49,6 +49,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 
     if (!has_index(json, "BirthDate")) error("Missing required property");
     retval.birth_date = json["BirthDate"];
+    if (json["BirthDateIsProtected"] != Standards.JSON.true && json["BirthDateIsProtected"] != Standards.JSON.false) error("Expected bool");
     retval.birth_date_is_protected = json["BirthDateIsProtected"];
     retval.gender_type_id = json["GenderTypeID"];
     retval.notes = json["Notes"];
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 df814d2..fb60f25 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
@@ -44,6 +44,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.limit = json["limit"];
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
diff --git a/base/pike/test/inputs/json/misc/421d4.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/421d4.json/default/TopLevel.pmod
index 48d5e80..98da938 100644
--- a/base/pike/test/inputs/json/misc/421d4.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/421d4.json/default/TopLevel.pmod
@@ -164,7 +164,9 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
@@ -173,11 +175,13 @@ View View_from_JSON(mixed json) {
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -345,6 +349,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -438,6 +443,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
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 9844385..319ca2c 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
@@ -230,32 +230,44 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     retval.author_flair_css_class = json["author_flair_css_class"];
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     retval.link_flair_css_class = json["link_flair_css_class"];
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     if (!has_index(json, "media")) error("Missing required property");
     retval.media = json["media"];
@@ -264,13 +276,16 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
@@ -278,7 +293,9 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.secure_media_embed = json["secure_media_embed"];
     retval.selftext = json["selftext"];
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -295,6 +312,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
@@ -434,6 +452,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
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 a02e084..ae555c3 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
@@ -44,6 +44,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.limit = json["limit"];
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
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 7a35b24..53f710c 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
@@ -161,18 +161,22 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -350,6 +354,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -622,6 +627,7 @@ class Order {
 Order Order_from_JSON(mixed json) {
     Order retval = Order();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.column_field_name = json["columnFieldName"];
 
@@ -663,6 +669,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
@@ -746,6 +753,7 @@ class OrderBy {
 OrderBy OrderBy_from_JSON(mixed json) {
     OrderBy retval = OrderBy();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.expression = json["expression"];
 
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 d25d2f8..1856f9c 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
@@ -161,18 +161,22 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -353,6 +357,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -619,6 +624,7 @@ class Order {
 Order Order_from_JSON(mixed json) {
     Order retval = Order();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.column_field_name = json["columnFieldName"];
 
@@ -660,6 +666,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
@@ -743,6 +750,7 @@ class OrderBy {
 OrderBy OrderBy_from_JSON(mixed json) {
     OrderBy retval = OrderBy();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.expression = json["expression"];
 
diff --git a/base/pike/test/inputs/json/misc/68c30.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/68c30.json/default/TopLevel.pmod
index 776596a..296b52b 100644
--- a/base/pike/test/inputs/json/misc/68c30.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/68c30.json/default/TopLevel.pmod
@@ -69,6 +69,7 @@ class Tx {
 Tx Tx_from_JSON(mixed json) {
     Tx retval = Tx();
 
+    if (json["double_spend"] != Standards.JSON.true && json["double_spend"] != Standards.JSON.false) error("Expected bool");
     retval.double_spend = json["double_spend"];
     retval.hash = json["hash"];
     retval.inputs = json["inputs"];
@@ -141,6 +142,7 @@ Out Out_from_JSON(mixed json) {
     retval.addr = json["addr"];
     retval.n = json["n"];
     retval.script = json["script"];
+    if (json["spent"] != Standards.JSON.true && json["spent"] != Standards.JSON.false) error("Expected bool");
     retval.spent = json["spent"];
     retval.tx_index = json["tx_index"];
     retval.type = json["type"];
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 8042800..a72225f 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
@@ -230,6 +230,7 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     if (!has_index(json, "author_flair_css_class")) error("Missing required property");
@@ -238,28 +239,39 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     if (!has_index(json, "link_flair_css_class")) error("Missing required property");
     retval.link_flair_css_class = json["link_flair_css_class"];
     if (!has_index(json, "link_flair_text")) error("Missing required property");
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     if (!has_index(json, "media")) error("Missing required property");
     retval.media = json["media"];
@@ -268,13 +280,16 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
@@ -283,7 +298,9 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.selftext = json["selftext"];
     if (!has_index(json, "selftext_html")) error("Missing required property");
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = json["subreddit"];
     retval.subreddit_id = json["subreddit_id"];
@@ -301,6 +318,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
@@ -438,6 +456,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
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 ff70675..f322fc5 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
@@ -44,6 +44,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.limit = json["limit"];
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
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 6c58be1..1cfdb91 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
@@ -570,6 +570,7 @@ Parameter Parameter_from_JSON(mixed json) {
     retval.format = FormatEnum_from_JSON(json["format"]);
     retval.in = In_from_JSON(json["in"]);
     retval.name = json["name"];
+    if (json["required"] != Standards.JSON.true && json["required"] != Standards.JSON.false) error("Expected bool");
     retval.required = json["required"];
     retval.type = FormatEnum_from_JSON(json["type"]);
 
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 e3eee97..a86dabe 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
@@ -251,6 +251,7 @@ Parameter Parameter_from_JSON(mixed json) {
     retval.format = Type_from_JSON(json["format"]);
     retval.in = In_from_JSON(json["in"]);
     retval.name = json["name"];
+    if (json["required"] != Standards.JSON.true && json["required"] != Standards.JSON.false) error("Expected bool");
     retval.required = json["required"];
     retval.type = Type_from_JSON(json["type"]);
 
diff --git a/base/pike/test/inputs/json/misc/7eb30.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7eb30.json/default/TopLevel.pmod
index 6a9a9f8..1e36bb1 100644
--- a/base/pike/test/inputs/json/misc/7eb30.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7eb30.json/default/TopLevel.pmod
@@ -84,6 +84,7 @@ Result Result_from_JSON(mixed json) {
 
     retval.code = json["code"];
     retval.english = json["english"];
+    if (json["fav"] != Standards.JSON.true && json["fav"] != Standards.JSON.false) error("Expected bool");
     retval.fav = json["fav"];
     retval.group = json["group"];
     retval.location = Location_from_JSON(json["location"]);
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 7230202..97c733e 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
@@ -75,7 +75,9 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.git_push_url = json["git_push_url"];
     retval.html_url = json["html_url"];
     retval.id = json["id"];
+    if (json["public"] != Standards.JSON.true && json["public"] != Standards.JSON.false) error("Expected bool");
     retval.top_level_public = json["public"];
+    if (json["truncated"] != Standards.JSON.true && json["truncated"] != Standards.JSON.false) error("Expected bool");
     retval.truncated = json["truncated"];
     retval.updated_at = json["updated_at"];
     retval.url = json["url"];
diff --git a/base/pike/test/inputs/json/misc/80aff.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/80aff.json/default/TopLevel.pmod
index f731f4a..3a6230e 100644
--- a/base/pike/test/inputs/json/misc/80aff.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/80aff.json/default/TopLevel.pmod
@@ -42,8 +42,10 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.count = json["count"];
     retval.facets = json["facets"];
     retval.limit = json["limit"];
+    if (json["next"] != Standards.JSON.true && json["next"] != Standards.JSON.false) error("Expected bool");
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
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 5d16061..7fdd40b 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
@@ -230,6 +230,7 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     if (!has_index(json, "author_flair_css_class")) error("Missing required property");
@@ -238,26 +239,37 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     retval.link_flair_css_class = json["link_flair_css_class"];
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     retval.media = json["media"];
     retval.media_embed = json["media_embed"];
@@ -265,13 +277,16 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
@@ -279,7 +294,9 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.selftext = json["selftext"];
     if (!has_index(json, "selftext_html")) error("Missing required property");
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -296,6 +313,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
@@ -342,6 +360,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
diff --git a/base/pike/test/inputs/json/misc/96f7c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/96f7c.json/default/TopLevel.pmod
index bb09a02..9be09ee 100644
--- a/base/pike/test/inputs/json/misc/96f7c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/96f7c.json/default/TopLevel.pmod
@@ -42,6 +42,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.hooks = json["hooks"];
     retval.importer = json["importer"];
     retval.pages = json["pages"];
+    if (json["verifiable_password_authentication"] != Standards.JSON.true && json["verifiable_password_authentication"] != Standards.JSON.false) error("Expected bool");
     retval.verifiable_password_authentication = json["verifiable_password_authentication"];
 
     return retval;
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 56bc456..961efe3 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
@@ -44,6 +44,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.limit = json["limit"];
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
diff --git a/base/pike/test/inputs/json/misc/a0496.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/a0496.json/default/TopLevel.pmod
index 75d01a9..5ef0148 100644
--- a/base/pike/test/inputs/json/misc/a0496.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/a0496.json/default/TopLevel.pmod
@@ -69,6 +69,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.from_date = json["from_date"];
     retval.id = json["id"];
     retval.name = json["name"];
+    if (json["premium"] != Standards.JSON.true && json["premium"] != Standards.JSON.false) error("Expected bool");
     retval.premium = json["premium"];
     retval.source_code = json["source_code"];
     retval.source_name = json["source_name"];
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 5d39df9..0d36d15 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
@@ -156,7 +156,9 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
@@ -165,11 +167,13 @@ View View_from_JSON(mixed json) {
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -346,6 +350,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -439,6 +444,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
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 694b3c8..956221b 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
@@ -222,34 +222,46 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     retval.author_flair_css_class = json["author_flair_css_class"];
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     if (!has_index(json, "link_flair_css_class")) error("Missing required property");
     retval.link_flair_css_class = json["link_flair_css_class"];
     if (!has_index(json, "link_flair_text")) error("Missing required property");
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     retval.media = json["media"];
     retval.media_embed = json["media_embed"];
@@ -257,18 +269,23 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     retval.secure_media_embed = json["secure_media_embed"];
     retval.selftext = json["selftext"];
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -281,6 +298,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
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 017d54a..887b204 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
@@ -230,6 +230,7 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     retval.author_flair_css_class = json["author_flair_css_class"];
@@ -237,10 +238,15 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
@@ -248,16 +254,22 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     retval.link_flair_css_class = json["link_flair_css_class"];
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     if (!has_index(json, "media")) error("Missing required property");
     retval.media = json["media"];
@@ -266,13 +278,16 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
@@ -280,7 +295,9 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.secure_media_embed = json["secure_media_embed"];
     retval.selftext = json["selftext"];
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -295,6 +312,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
@@ -444,6 +462,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
diff --git a/base/pike/test/inputs/json/misc/d23d5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/d23d5.json/default/TopLevel.pmod
index 18831cb..20d0861 100644
--- a/base/pike/test/inputs/json/misc/d23d5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/d23d5.json/default/TopLevel.pmod
@@ -44,6 +44,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.limit = json["limit"];
     retval.next = json["next"];
     retval.offset = json["offset"];
+    if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
     retval.results = json["results"];
 
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 7d60b08..f88b7ef 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
@@ -251,6 +251,7 @@ Parameter Parameter_from_JSON(mixed json) {
     retval.format = Type_from_JSON(json["format"]);
     retval.in = json["in"];
     retval.name = json["name"];
+    if (json["required"] != Standards.JSON.true && json["required"] != Standards.JSON.false) error("Expected bool");
     retval.required = json["required"];
     retval.type = Type_from_JSON(json["type"]);
 
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 e4fc490..16bdc10 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
@@ -119,7 +119,9 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
@@ -128,11 +130,13 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.moderation_status = json["moderationStatus"];
     retval.modifying_view_uid = ModifyingViewUid_from_JSON(json["modifyingViewUid"]);
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = Provenance_from_JSON(json["provenance"]);
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -196,6 +200,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = GrantType_from_JSON(json["type"]);
 
@@ -371,6 +376,7 @@ class Order {
 Order Order_from_JSON(mixed json) {
     Order retval = Order();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.column_field_name = OrderColumnFieldName_from_JSON(json["columnFieldName"]);
 
@@ -834,6 +840,7 @@ class FluffyVisible {
 FluffyVisible FluffyVisible_from_JSON(mixed json) {
     FluffyVisible retval = FluffyVisible();
 
+    if (json["href"] != Standards.JSON.true && json["href"] != Standards.JSON.false) error("Expected bool");
     retval.href = json["href"];
 
     return retval;
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 27ca460..af4632d 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
@@ -222,34 +222,46 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     retval.author_flair_css_class = json["author_flair_css_class"];
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = (float)json["created"];
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     if (!has_index(json, "link_flair_css_class")) error("Missing required property");
     retval.link_flair_css_class = json["link_flair_css_class"];
     if (!has_index(json, "link_flair_text")) error("Missing required property");
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     retval.media = json["media"];
     retval.media_embed = json["media_embed"];
@@ -257,18 +269,23 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.permalink = json["permalink"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     retval.secure_media_embed = json["secure_media_embed"];
     retval.selftext = json["selftext"];
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -281,6 +298,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
 
     return retval;
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 5d39df9..0d36d15 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
@@ -156,7 +156,9 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
@@ -165,11 +167,13 @@ View View_from_JSON(mixed json) {
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -346,6 +350,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -439,6 +444,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
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 a7cd83d..1b51271 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
@@ -298,6 +298,7 @@ Parameter Parameter_from_JSON(mixed json) {
     retval.format = Type_from_JSON(json["format"]);
     retval.in = json["in"];
     retval.name = json["name"];
+    if (json["required"] != Standards.JSON.true && json["required"] != Standards.JSON.false) error("Expected bool");
     retval.required = json["required"];
     retval.type = Type_from_JSON(json["type"]);
 
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 4c0ec51..65c7e9a 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
@@ -158,18 +158,22 @@ View View_from_JSON(mixed json) {
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
+    if (json["hideFromCatalog"] != Standards.JSON.true && json["hideFromCatalog"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_catalog = json["hideFromCatalog"];
+    if (json["hideFromDataJson"] != Standards.JSON.true && json["hideFromDataJson"] != Standards.JSON.false) error("Expected bool");
     retval.hide_from_data_json = json["hideFromDataJson"];
     retval.id = json["id"];
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     retval.metadata = json["metadata"];
     retval.name = json["name"];
+    if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
     retval.number_of_comments = json["numberOfComments"];
     retval.oid = json["oid"];
     retval.owner = json["owner"];
     retval.provenance = json["provenance"];
+    if (json["publicationAppendEnabled"] != Standards.JSON.true && json["publicationAppendEnabled"] != Standards.JSON.false) error("Expected bool");
     retval.publication_append_enabled = json["publicationAppendEnabled"];
     retval.publication_date = json["publicationDate"];
     retval.publication_group = json["publicationGroup"];
@@ -359,6 +363,7 @@ Grant Grant_from_JSON(mixed json) {
     Grant retval = Grant();
 
     retval.flags = json["flags"];
+    if (json["inherited"] != Standards.JSON.true && json["inherited"] != Standards.JSON.false) error("Expected bool");
     retval.inherited = json["inherited"];
     retval.type = json["type"];
 
@@ -686,6 +691,7 @@ class FilterConditionMetadata {
 FilterConditionMetadata FilterConditionMetadata_from_JSON(mixed json) {
     FilterConditionMetadata retval = FilterConditionMetadata();
 
+    if (json["advanced"] != Standards.JSON.true && json["advanced"] != Standards.JSON.false) error("Expected bool");
     retval.advanced = json["advanced"];
     retval.unified_version = json["unifiedVersion"];
 
@@ -729,6 +735,7 @@ class Order {
 Order Order_from_JSON(mixed json) {
     Order retval = Order();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.column_field_name = json["columnFieldName"];
 
@@ -770,6 +777,7 @@ class Visible {
 Visible Visible_from_JSON(mixed json) {
     Visible retval = Visible();
 
+    if (json["table"] != Standards.JSON.true && json["table"] != Standards.JSON.false) error("Expected bool");
     retval.table = json["table"];
 
     return retval;
@@ -853,6 +861,7 @@ class OrderBy {
 OrderBy OrderBy_from_JSON(mixed json) {
     OrderBy retval = OrderBy();
 
+    if (json["ascending"] != Standards.JSON.true && json["ascending"] != Standards.JSON.false) error("Expected bool");
     retval.ascending = json["ascending"];
     retval.expression = json["expression"];
 
diff --git a/base/pike/test/inputs/json/priority/blns-object.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/blns-object.json/default/TopLevel.pmod
index b68ff0d..776715b 100644
--- a/base/pike/test/inputs/json/priority/blns-object.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/blns-object.json/default/TopLevel.pmod
@@ -580,6 +580,7 @@ A A_from_JSON(mixed json) {
     retval.cunning = json["<>?:\"{}|_+"];
     retval.d = json["%d"];
     retval.dick_van_dyke = json["Dick Van Dyke"];
+    if (json["dontMakeAMap"] != Standards.JSON.true && json["dontMakeAMap"] != Standards.JSON.false) error("Expected bool");
     retval.dont_make_a_map = json["dontMakeAMap"];
     retval.dr_herman_i_libshitz = json["Dr. Herman I. Libshitz"];
     retval.empty = json[" "];
@@ -1126,6 +1127,7 @@ B B_from_JSON(mixed json) {
     retval.credit_https_twitter_com_jifa_status_625776454479970304 = json["#\tCredit: https://twitter.com/jifa/status/625776454479970304"];
     retval.cunning = json["社會科學院語學研究所"];
     retval.dev_null_touch_tmp_blns_fail_echo = json["/dev/null; touch /tmp/blns.fail ; echo"];
+    if (json["dontMakeAMap"] != Standards.JSON.true && json["dontMakeAMap"] != Standards.JSON.false) error("Expected bool");
     retval.dont_make_a_map = json["dontMakeAMap"];
     retval.empty = json["\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f\u007f"];
     retval.eval_puts_hello_world = json["eval(\"puts 'hello world'\")"];
@@ -1694,6 +1696,7 @@ C C_from_JSON(mixed json) {
     retval.craig_cockburn_software_specialist = json["Craig Cockburn, Software Specialist"];
     retval.cunning = json["\\\\"];
     retval.dcc_send_startkeylogger_000 = json["DCC SEND STARTKEYLOGGER 0 0 0"];
+    if (json["dontMakeAMap"] != Standards.JSON.true && json["dontMakeAMap"] != Standards.JSON.false) error("Expected bool");
     retval.dont_make_a_map = json["dontMakeAMap"];
     retval.emoji = json["#\tEmoji"];
     retval.empty = json["\"\""];
diff --git a/base/pike/test/inputs/json/priority/bug790.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/bug790.json/default/TopLevel.pmod
index cd55fb9..14accc3 100644
--- a/base/pike/test/inputs/json/priority/bug790.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/bug790.json/default/TopLevel.pmod
@@ -43,6 +43,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 
     retval.children_data = json["children_data"];
     retval.id = json["id"];
+    if (json["is_active"] != Standards.JSON.true && json["is_active"] != Standards.JSON.false) error("Expected bool");
     retval.is_active = json["is_active"];
     retval.level = json["level"];
     retval.name = json["name"];
diff --git a/base/pike/test/inputs/json/priority/combinations1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/combinations1.json/default/TopLevel.pmod
index a1d7acd..fd4040b 100644
--- a/base/pike/test/inputs/json/priority/combinations1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/combinations1.json/default/TopLevel.pmod
@@ -371,6 +371,7 @@ CimeliaClass CimeliaClass_from_JSON(mixed json) {
     retval.catharticalness = (float)json["catharticalness"];
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
+    if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
     retval.homocerc = json["homocerc"];
     retval.nonbookish = json["nonbookish"];
 
@@ -1298,6 +1299,7 @@ Interacinar Interacinar_from_JSON(mixed json) {
     Interacinar retval = Interacinar();
 
     retval.assapan = (float)json["assapan"];
+    if (json["benefactorship"] != Standards.JSON.true && json["benefactorship"] != Standards.JSON.false) error("Expected bool");
     retval.benefactorship = json["benefactorship"];
     retval.triseriatim = json["triseriatim"];
     retval.tubbing = json["tubbing"];
diff --git a/base/pike/test/inputs/json/priority/combinations2.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/combinations2.json/default/TopLevel.pmod
index 5398bab..6e2c809 100644
--- a/base/pike/test/inputs/json/priority/combinations2.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/combinations2.json/default/TopLevel.pmod
@@ -154,6 +154,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.oskar = json["Oskar"];
     retval.rebecca = json["Rebecca"];
     retval.rhomboganoidei = json["Rhomboganoidei"];
+    if (json["Rigsmal"] != Standards.JSON.true && json["Rigsmal"] != Standards.JSON.false) error("Expected bool");
     retval.rigsmal = json["Rigsmal"];
     retval.ruellia = json["Ruellia"];
     retval.school = json["School"];
@@ -309,6 +310,7 @@ Rebecca Rebecca_from_JSON(mixed json) {
     retval.catharticalness = (float)json["catharticalness"];
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
+    if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
     retval.homocerc = json["homocerc"];
     retval.nonbookish = json["nonbookish"];
 
diff --git a/base/pike/test/inputs/json/priority/combinations3.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/combinations3.json/default/TopLevel.pmod
index f19257a..efcf5fb 100644
--- a/base/pike/test/inputs/json/priority/combinations3.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/combinations3.json/default/TopLevel.pmod
@@ -698,6 +698,7 @@ MonaziteClass MonaziteClass_from_JSON(mixed json) {
     retval.catharticalness = (float)json["catharticalness"];
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
+    if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
     retval.homocerc = json["homocerc"];
     retval.nonbookish = json["nonbookish"];
 
@@ -864,6 +865,7 @@ Noncontributing Noncontributing_from_JSON(mixed json) {
     retval.estevin = json["estevin"];
     retval.jolterhead = (float)json["jolterhead"];
     retval.sauternes = json["sauternes"];
+    if (json["sparsely"] != Standards.JSON.true && json["sparsely"] != Standards.JSON.false) error("Expected bool");
     retval.sparsely = json["sparsely"];
     retval.unrequested = json["unrequested"];
 
diff --git a/base/pike/test/inputs/json/priority/combinations4.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/combinations4.json/default/TopLevel.pmod
index 4c258f5..d8d6028 100644
--- a/base/pike/test/inputs/json/priority/combinations4.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/combinations4.json/default/TopLevel.pmod
@@ -389,6 +389,7 @@ QuebrachineClass QuebrachineClass_from_JSON(mixed json) {
     retval.catharticalness = (float)json["catharticalness"];
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
+    if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
     retval.homocerc = json["homocerc"];
     retval.nonbookish = json["nonbookish"];
 
diff --git a/base/pike/test/inputs/json/priority/direct-recursive.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/direct-recursive.json/default/TopLevel.pmod
index ba8963c..0bfd347 100644
--- a/base/pike/test/inputs/json/priority/direct-recursive.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/direct-recursive.json/default/TopLevel.pmod
@@ -36,6 +36,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.also = json["also"];
+    if (json["bar"] != Standards.JSON.true && json["bar"] != Standards.JSON.false) error("Expected bool");
     retval.bar = json["bar"];
     retval.foo = json["foo"];
     retval.moo = (float)json["moo"];
diff --git a/base/pike/test/inputs/json/priority/name-style.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/name-style.json/default/TopLevel.pmod
index ce5fdb3..d7ff9a4 100644
--- a/base/pike/test/inputs/json/priority/name-style.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/name-style.json/default/TopLevel.pmod
@@ -40,11 +40,15 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.an_easy_one = json["anEasyOne"];
+    if (json["isMNISTLetter"] != Standards.JSON.true && json["isMNISTLetter"] != Standards.JSON.false) error("Expected bool");
     retval.is_mnist_letter = json["isMNISTLetter"];
     retval.json_string = json["JSONString"];
+    if (json["PrettyEasyToo"] != Standards.JSON.true && json["PrettyEasyToo"] != Standards.JSON.false) error("Expected bool");
     retval.pretty_easy_too = json["PrettyEasyToo"];
     retval.should_know_that_id_is_an_initialism = json["should_know_that_id_is_an_initialism"];
+    if (json["   spaces are separators  too  "] != Standards.JSON.true && json["   spaces are separators  too  "] != Standards.JSON.false) error("Expected bool");
     retval.spaces_are_separators_too = json["   spaces are separators  too  "];
+    if (json["ZSR_HH_DEMO3_DELMATNR"] != Standards.JSON.true && json["ZSR_HH_DEMO3_DELMATNR"] != Standards.JSON.false) error("Expected bool");
     retval.zsr_hh_demo3_delmatnr = json["ZSR_HH_DEMO3_DELMATNR"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.pmod
index 9702f38..de50784 100644
--- a/base/pike/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.pmod
@@ -294,11 +294,13 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.y_string_unicode_u_fffe_nonchar_json = json["y_string_unicode_U+FFFE_nonchar.json"];
     retval.y_string_utf8_json = json["y_string_utf8.json"];
     retval.y_string_with_del_character_json = json["y_string_with_del_character.json"];
+    if (json["y_structure_lonely_false.json"] != Standards.JSON.true && json["y_structure_lonely_false.json"] != Standards.JSON.false) error("Expected bool");
     retval.y_structure_lonely_false_json = json["y_structure_lonely_false.json"];
     retval.y_structure_lonely_int_json = json["y_structure_lonely_int.json"];
     retval.y_structure_lonely_negative_real_json = (float)json["y_structure_lonely_negative_real.json"];
     retval.y_structure_lonely_null_json = json["y_structure_lonely_null.json"];
     retval.y_structure_lonely_string_json = json["y_structure_lonely_string.json"];
+    if (json["y_structure_lonely_true.json"] != Standards.JSON.true && json["y_structure_lonely_true.json"] != Standards.JSON.false) error("Expected bool");
     retval.y_structure_lonely_true_json = json["y_structure_lonely_true.json"];
     retval.y_structure_string_empty_json = json["y_structure_string_empty.json"];
     retval.y_structure_trailing_newline_json = json["y_structure_trailing_newline.json"];
diff --git a/base/pike/test/inputs/json/priority/php-validation.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/php-validation.json/default/TopLevel.pmod
index e31945f..116ef6a 100644
--- a/base/pike/test/inputs/json/priority/php-validation.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/php-validation.json/default/TopLevel.pmod
@@ -35,6 +35,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (json["boolean"] != Standards.JSON.true && json["boolean"] != Standards.JSON.false) error("Expected bool");
     retval.boolean = json["boolean"];
     retval.integer = json["integer"];
     retval.integers = json["integers"];
diff --git a/base/pike/test/inputs/json/priority/recursive.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/recursive.json/default/TopLevel.pmod
index ec1e594..33a465e 100644
--- a/base/pike/test/inputs/json/priority/recursive.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/recursive.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.match = json["match"];
     retval.page = json["page"];
     retval.product = json["product"];
+    if (json["schk"] != Standards.JSON.true && json["schk"] != Standards.JSON.false) error("Expected bool");
     retval.schk = json["schk"];
     retval.totallooseoffers = json["totallooseoffers"];
     retval.totalpages = json["totalpages"];
@@ -88,9 +89,12 @@ class Category {
 Category Category_from_JSON(mixed json) {
     Category retval = Category();
 
+    if (json["concatenatecategoryname"] != Standards.JSON.true && json["concatenatecategoryname"] != Standards.JSON.false) error("Expected bool");
     retval.concatenatecategoryname = json["concatenatecategoryname"];
+    if (json["hasoffer"] != Standards.JSON.true && json["hasoffer"] != Standards.JSON.false) error("Expected bool");
     retval.hasoffer = json["hasoffer"];
     retval.id = json["id"];
+    if (json["isfinal"] != Standards.JSON.true && json["isfinal"] != Standards.JSON.false) error("Expected bool");
     retval.isfinal = json["isfinal"];
     retval.links = json["links"];
     retval.name = json["name"];
@@ -244,6 +248,7 @@ Date Date_from_JSON(mixed json) {
     retval.month = json["month"];
     retval.second = json["second"];
     retval.timezone = json["timezone"];
+    if (json["valid"] != Standards.JSON.true && json["valid"] != Standards.JSON.false) error("Expected bool");
     retval.valid = json["valid"];
     retval.xmlschematype = json["xmlschematype"];
     retval.year = json["year"];
@@ -364,8 +369,11 @@ ProductProduct ProductProduct_from_JSON(mixed json) {
 
     retval.categoryid = json["categoryid"];
     retval.currency = json["currency"];
+    if (json["eco"] != Standards.JSON.true && json["eco"] != Standards.JSON.false) error("Expected bool");
     retval.eco = json["eco"];
+    if (json["fulldescription"] != Standards.JSON.true && json["fulldescription"] != Standards.JSON.false) error("Expected bool");
     retval.fulldescription = json["fulldescription"];
+    if (json["hasmetasearch"] != Standards.JSON.true && json["hasmetasearch"] != Standards.JSON.false) error("Expected bool");
     retval.hasmetasearch = json["hasmetasearch"];
     retval.id = json["id"];
     retval.links = json["links"];
diff --git a/base/pike/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.pmod
index b2b2da7..7254ca7 100644
--- a/base/pike/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/union-constructor-clash.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ class BoolInUnion {
 BoolInUnion BoolInUnion_from_JSON(mixed json) {
     BoolInUnion retval = BoolInUnion();
 
+    if (json["a"] != Standards.JSON.true && json["a"] != Standards.JSON.false) error("Expected bool");
     retval.a = json["a"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/unions.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/unions.json/default/TopLevel.pmod
index 7bbbad6..1d8dbc0 100644
--- a/base/pike/test/inputs/json/priority/unions.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/unions.json/default/TopLevel.pmod
@@ -65,6 +65,7 @@ class ZClass {
 ZClass ZClass_from_JSON(mixed json) {
     ZClass retval = ZClass();
 
+    if (json["a"] != Standards.JSON.true && json["a"] != Standards.JSON.false) error("Expected bool");
     retval.a = json["a"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/uuids.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/uuids.json/default/TopLevel.pmod
index eb20cc5..3449cbd 100644
--- a/base/pike/test/inputs/json/priority/uuids.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/uuids.json/default/TopLevel.pmod
@@ -37,6 +37,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (json["booleanValue"] != Standards.JSON.true && json["booleanValue"] != Standards.JSON.false) error("Expected bool");
     retval.boolean_value = json["booleanValue"];
     retval.double_value = (float)json["doubleValue"];
     retval.int_value = json["intValue"];
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 5b92e33..bee2d1f 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
@@ -53,6 +53,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.org = json["org"];
     retval.payload = json["payload"];
     retval.repo = json["repo"];
+    if (json["public"] != Standards.JSON.true && json["public"] != Standards.JSON.false) error("Expected bool");
     retval.top_level_public = json["public"];
     retval.type = json["type"];
 
@@ -259,6 +260,7 @@ User User_from_JSON(mixed json) {
     retval.organizations_url = json["organizations_url"];
     retval.received_events_url = json["received_events_url"];
     retval.repos_url = json["repos_url"];
+    if (json["site_admin"] != Standards.JSON.true && json["site_admin"] != Standards.JSON.false) error("Expected bool");
     retval.site_admin = json["site_admin"];
     retval.starred_url = json["starred_url"];
     retval.subscriptions_url = json["subscriptions_url"];
@@ -301,6 +303,7 @@ Commit Commit_from_JSON(mixed json) {
     Commit retval = Commit();
 
     retval.author = json["author"];
+    if (json["distinct"] != Standards.JSON.true && json["distinct"] != Standards.JSON.false) error("Expected bool");
     retval.distinct = json["distinct"];
     retval.message = json["message"];
     retval.sha = json["sha"];
@@ -402,6 +405,7 @@ Issue Issue_from_JSON(mixed json) {
     retval.id = json["id"];
     retval.labels = json["labels"];
     retval.labels_url = json["labels_url"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     if (!has_index(json, "milestone")) error("Missing required property");
     retval.milestone = json["milestone"];
@@ -442,6 +446,7 @@ Label Label_from_JSON(mixed json) {
 
     retval.color = json["color"];
     retval.id = json["id"];
+    if (json["default"] != Standards.JSON.true && json["default"] != Standards.JSON.false) error("Expected bool");
     retval.label_default = json["default"];
     retval.name = json["name"];
     retval.url = json["url"];
@@ -655,11 +660,14 @@ PayloadPullRequest PayloadPullRequest_from_JSON(mixed json) {
     retval.id = json["id"];
     retval.issue_url = json["issue_url"];
     retval.links = json["_links"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
+    if (json["maintainer_can_modify"] != Standards.JSON.true && json["maintainer_can_modify"] != Standards.JSON.false) error("Expected bool");
     retval.maintainer_can_modify = json["maintainer_can_modify"];
     retval.merge_commit_sha = json["merge_commit_sha"];
     retval.mergeable = json["mergeable"];
     retval.mergeable_state = json["mergeable_state"];
+    if (json["merged"] != Standards.JSON.true && json["merged"] != Standards.JSON.false) error("Expected bool");
     retval.merged = json["merged"];
     retval.merged_at = json["merged_at"];
     retval.merged_by = json["merged_by"];
@@ -881,6 +889,7 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.description = json["description"];
     retval.downloads_url = json["downloads_url"];
     retval.events_url = json["events_url"];
+    if (json["fork"] != Standards.JSON.true && json["fork"] != Standards.JSON.false) error("Expected bool");
     retval.fork = json["fork"];
     retval.forks = json["forks"];
     retval.forks_count = json["forks_count"];
@@ -890,10 +899,15 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.git_refs_url = json["git_refs_url"];
     retval.git_tags_url = json["git_tags_url"];
     retval.git_url = json["git_url"];
+    if (json["has_downloads"] != Standards.JSON.true && json["has_downloads"] != Standards.JSON.false) error("Expected bool");
     retval.has_downloads = json["has_downloads"];
+    if (json["has_issues"] != Standards.JSON.true && json["has_issues"] != Standards.JSON.false) error("Expected bool");
     retval.has_issues = json["has_issues"];
+    if (json["has_pages"] != Standards.JSON.true && json["has_pages"] != Standards.JSON.false) error("Expected bool");
     retval.has_pages = json["has_pages"];
+    if (json["has_projects"] != Standards.JSON.true && json["has_projects"] != Standards.JSON.false) error("Expected bool");
     retval.has_projects = json["has_projects"];
+    if (json["has_wiki"] != Standards.JSON.true && json["has_wiki"] != Standards.JSON.false) error("Expected bool");
     retval.has_wiki = json["has_wiki"];
     retval.homepage = json["homepage"];
     retval.hooks_url = json["hooks_url"];
@@ -917,6 +931,7 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.pulls_url = json["pulls_url"];
     retval.pushed_at = json["pushed_at"];
     retval.releases_url = json["releases_url"];
+    if (json["private"] != Standards.JSON.true && json["private"] != Standards.JSON.false) error("Expected bool");
     retval.repo_private = json["private"];
     retval.size = json["size"];
     retval.ssh_url = json["ssh_url"];
diff --git a/base/pike/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.pmod
index 4447b66..afe5b4f 100644
--- a/base/pike/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.pmod
@@ -53,6 +53,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (json["booleanValue"] != Standards.JSON.true && json["booleanValue"] != Standards.JSON.false) error("Expected bool");
     retval.boolean_value = json["booleanValue"];
     retval.date_value = json["dateValue"];
     retval.different_things = json["differentThings"];
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 2ad2e6d..b259a9a 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
@@ -234,6 +234,7 @@ ChildData ChildData_from_JSON(mixed json) {
 
     retval.approved_at_utc = json["approved_at_utc"];
     retval.approved_by = json["approved_by"];
+    if (json["archived"] != Standards.JSON.true && json["archived"] != Standards.JSON.false) error("Expected bool");
     retval.archived = json["archived"];
     retval.author = json["author"];
     if (!has_index(json, "author_flair_css_class")) error("Missing required property");
@@ -242,10 +243,15 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.author_flair_text = json["author_flair_text"];
     retval.banned_at_utc = json["banned_at_utc"];
     retval.banned_by = json["banned_by"];
+    if (json["brand_safe"] != Standards.JSON.true && json["brand_safe"] != Standards.JSON.false) error("Expected bool");
     retval.brand_safe = json["brand_safe"];
+    if (json["can_gild"] != Standards.JSON.true && json["can_gild"] != Standards.JSON.false) error("Expected bool");
     retval.can_gild = json["can_gild"];
+    if (json["can_mod_post"] != Standards.JSON.true && json["can_mod_post"] != Standards.JSON.false) error("Expected bool");
     retval.can_mod_post = json["can_mod_post"];
+    if (json["clicked"] != Standards.JSON.true && json["clicked"] != Standards.JSON.false) error("Expected bool");
     retval.clicked = json["clicked"];
+    if (json["contest_mode"] != Standards.JSON.true && json["contest_mode"] != Standards.JSON.false) error("Expected bool");
     retval.contest_mode = json["contest_mode"];
     retval.created = json["created"];
     retval.created_utc = json["created_utc"];
@@ -253,18 +259,24 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
     retval.downs = json["downs"];
+    if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
     retval.gilded = json["gilded"];
+    if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
+    if (json["hide_score"] != Standards.JSON.true && json["hide_score"] != Standards.JSON.false) error("Expected bool");
     retval.hide_score = json["hide_score"];
     retval.id = json["id"];
+    if (json["is_self"] != Standards.JSON.true && json["is_self"] != Standards.JSON.false) error("Expected bool");
     retval.is_self = json["is_self"];
+    if (json["is_video"] != Standards.JSON.true && json["is_video"] != Standards.JSON.false) error("Expected bool");
     retval.is_video = json["is_video"];
     retval.likes = json["likes"];
     if (!has_index(json, "link_flair_css_class")) error("Missing required property");
     retval.link_flair_css_class = json["link_flair_css_class"];
     if (!has_index(json, "link_flair_text")) error("Missing required property");
     retval.link_flair_text = json["link_flair_text"];
+    if (json["locked"] != Standards.JSON.true && json["locked"] != Standards.JSON.false) error("Expected bool");
     retval.locked = json["locked"];
     retval.media = json["media"];
     retval.media_embed = json["media_embed"];
@@ -272,21 +284,26 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.name = json["name"];
     retval.num_comments = json["num_comments"];
     retval.num_reports = json["num_reports"];
+    if (json["over_18"] != Standards.JSON.true && json["over_18"] != Standards.JSON.false) error("Expected bool");
     retval.over_18 = json["over_18"];
     retval.parent_whitelist_status = WhitelistStatus_from_JSON(json["parent_whitelist_status"]);
     retval.permalink = json["permalink"];
     retval.post_hint = PostHint_from_JSON(json["post_hint"]);
     retval.preview = json["preview"];
+    if (json["quarantine"] != Standards.JSON.true && json["quarantine"] != Standards.JSON.false) error("Expected bool");
     retval.quarantine = json["quarantine"];
     retval.removal_reason = json["removal_reason"];
     retval.report_reasons = json["report_reasons"];
+    if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     retval.secure_media_embed = json["secure_media_embed"];
     retval.selftext = json["selftext"];
     retval.selftext_html = json["selftext_html"];
+    if (json["spoiler"] != Standards.JSON.true && json["spoiler"] != Standards.JSON.false) error("Expected bool");
     retval.spoiler = json["spoiler"];
+    if (json["stickied"] != Standards.JSON.true && json["stickied"] != Standards.JSON.false) error("Expected bool");
     retval.stickied = json["stickied"];
     retval.subreddit = Subreddit_from_JSON(json["subreddit"]);
     retval.subreddit_id = SubredditId_from_JSON(json["subreddit_id"]);
@@ -301,6 +318,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
     retval.view_count = json["view_count"];
+    if (json["visited"] != Standards.JSON.true && json["visited"] != Standards.JSON.false) error("Expected bool");
     retval.visited = json["visited"];
     retval.whitelist_status = WhitelistStatus_from_JSON(json["whitelist_status"]);
 
@@ -368,6 +386,7 @@ class Preview {
 Preview Preview_from_JSON(mixed json) {
     Preview retval = Preview();
 
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.images = json["images"];
 
diff --git a/base/pike/test/inputs/json/samples/simple-object.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/simple-object.json/default/TopLevel.pmod
index 0caf754..102351c 100644
--- a/base/pike/test/inputs/json/samples/simple-object.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/simple-object.json/default/TopLevel.pmod
@@ -33,6 +33,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 
     retval.date = json["date"];
     retval.title = json["title"];
+    if (json["validity"] != Standards.JSON.true && json["validity"] != Standards.JSON.false) error("Expected bool");
     retval.validity = json["validity"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/samples/spotify-album.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/spotify-album.json/default/TopLevel.pmod
index 3a819c4..a06342a 100644
--- a/base/pike/test/inputs/json/samples/spotify-album.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/spotify-album.json/default/TopLevel.pmod
@@ -285,6 +285,7 @@ Item Item_from_JSON(mixed json) {
     retval.available_markets = json["available_markets"];
     retval.disc_number = json["disc_number"];
     retval.duration_ms = json["duration_ms"];
+    if (json["explicit"] != Standards.JSON.true && json["explicit"] != Standards.JSON.false) error("Expected bool");
     retval.explicit = json["explicit"];
     retval.external_urls = json["external_urls"];
     retval.href = json["href"];
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 cc9d477..8d3757c 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
@@ -121,6 +121,7 @@ Object Object_from_JSON(mixed json) {
     if (!has_index(json, "caucus")) error("Missing required property");
     retval.caucus = Party_from_JSON(json["caucus"]);
     retval.congress_numbers = json["congress_numbers"];
+    if (json["current"] != Standards.JSON.true && json["current"] != Standards.JSON.false) error("Expected bool");
     retval.current = json["current"];
     retval.description = json["description"];
     retval.district = json["district"];
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 79a5660..674fb07 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
@@ -36,6 +36,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.amount = json["amount"];
+    if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
     retval.kind = Kind_from_JSON(json["kind"]);
     retval.ratio = (float)json["ratio"];
diff --git a/base/schema-pike/test/inputs/schema/implicit-all-of.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/implicit-all-of.schema/default/TopLevel.pmod
index 4ff04a8..a3f4cfe 100644
--- a/base/schema-pike/test/inputs/schema/implicit-all-of.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/implicit-all-of.schema/default/TopLevel.pmod
@@ -32,6 +32,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.foo = json["foo"];
+    if (json["bar"] != Standards.JSON.true && json["bar"] != Standards.JSON.false) error("Expected bool");
     retval.bar = json["bar"];
     retval.quux = json["quux"];
 
diff --git a/base/schema-pike/test/inputs/schema/non-standard-ref.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/non-standard-ref.schema/default/TopLevel.pmod
index ad59bb8..c467a3b 100644
--- a/base/schema-pike/test/inputs/schema/non-standard-ref.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/non-standard-ref.schema/default/TopLevel.pmod
@@ -33,6 +33,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 
     retval.bar = json["bar"];
     retval.foo = json["foo"];
+    if (json["quux"] != Standards.JSON.true && json["quux"] != Standards.JSON.false) error("Expected bool");
     retval.quux = json["quux"];
 
     return retval;
diff --git a/head/schema-pike/test/inputs/schema/optional-any.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/optional-any.schema/default/TopLevel.pmod
new file mode 100644
index 0000000..e847d9b
--- /dev/null
+++ b/head/schema-pike/test/inputs/schema/optional-any.schema/default/TopLevel.pmod
@@ -0,0 +1,37 @@
+// 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 {
+    bool  bar; // json: "bar"
+    mixed foo; // json: "foo"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "bar" : bar,
+            "foo" : foo,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TopLevel TopLevel_from_JSON(mixed json) {
+    TopLevel retval = TopLevel();
+
+    if (json["bar"] != Standards.JSON.true && json["bar"] != Standards.JSON.false) error("Expected bool");
+    retval.bar = json["bar"];
+    retval.foo = json["foo"];
+
+    return retval;
+}
diff --git a/base/schema-pike/test/inputs/schema/union.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/union.schema/default/TopLevel.pmod
index fb58edb..e436182 100644
--- a/base/schema-pike/test/inputs/schema/union.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/union.schema/default/TopLevel.pmod
@@ -38,6 +38,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
     retval.one = json["one"];
+    if (json["two"] != Standards.JSON.true && json["two"] != Standards.JSON.false) error("Expected bool");
     retval.two = json["two"];
     retval.three = json["three"];
 
