diff --git a/base/graphql-pike/test/inputs/graphql/github2.graphql/default/TopLevel.pmod b/head/graphql-pike/test/inputs/graphql/github2.graphql/default/TopLevel.pmod
index 3751bdc..817acda 100644
--- a/base/graphql-pike/test/inputs/graphql/github2.graphql/default/TopLevel.pmod
+++ b/head/graphql-pike/test/inputs/graphql/github2.graphql/default/TopLevel.pmod
@@ -99,6 +99,7 @@ class RepositoryConnection {
 RepositoryConnection RepositoryConnection_from_JSON(mixed json) {
     RepositoryConnection retval = RepositoryConnection();
 
+    if (!intp(json["totalCount"])) error("Expected integer");
     retval.total_count = json["totalCount"];
     if (!has_index(json, "nodes")) error("Missing required property");
     retval.nodes = json["nodes"];
diff --git a/base/graphql-pike/test/inputs/graphql/github7.graphql/default/TopLevel.pmod b/head/graphql-pike/test/inputs/graphql/github7.graphql/default/TopLevel.pmod
index 4cb17de..7b2b585 100644
--- a/base/graphql-pike/test/inputs/graphql/github7.graphql/default/TopLevel.pmod
+++ b/head/graphql-pike/test/inputs/graphql/github7.graphql/default/TopLevel.pmod
@@ -180,6 +180,7 @@ class Connection {
 Connection Connection_from_JSON(mixed json) {
     Connection retval = Connection();
 
+    if (!intp(json["totalCount"])) error("Expected integer");
     retval.total_count = json["totalCount"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod
index db12653..b417d09 100644
--- a/base/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/00c36.json/default/TopLevel.pmod
@@ -120,9 +120,12 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pages"])) error("Expected integer");
     retval.pages = json["pages"];
     retval.per_page = json["per_page"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/010b1.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/016af.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/016af.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/016af.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/016af.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/09f54.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/09f54.json/default/TopLevel.pmod
index 443e385..e62ed35 100644
--- a/base/pike/test/inputs/json/misc/09f54.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/09f54.json/default/TopLevel.pmod
@@ -81,6 +81,7 @@ Description Description_from_JSON(mixed json) {
     Description retval = Description();
 
     retval.base_period = json["base_period"];
+    if (!intp(json["missing"])) error("Expected integer");
     retval.missing = json["missing"];
     retval.title = json["title"];
     retval.units = json["units"];
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 99ee03d..8c26f09 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
@@ -39,11 +39,14 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
@@ -95,6 +98,7 @@ Result Result_from_JSON(mixed json) {
 
     retval.code = json["code"];
     retval.created_at = json["created_at"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
     retval.updated_at = json["updated_at"];
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 5adaa74..b288acc 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
@@ -92,6 +92,7 @@ Actor Actor_from_JSON(mixed json) {
     retval.avatar_url = json["avatar_url"];
     retval.display_login = json["display_login"];
     retval.gravatar_id = json["gravatar_id"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.login = json["login"];
     retval.url = json["url"];
@@ -311,24 +312,30 @@ class PullRequest {
 PullRequest PullRequest_from_JSON(mixed json) {
     PullRequest retval = PullRequest();
 
+    if (!intp(json["additions"])) error("Expected integer");
     retval.additions = json["additions"];
     retval.assignee = json["assignee"];
     retval.assignees = json["assignees"];
     Base_from_JSON(json["base"]);
     retval.base = json["base"];
     retval.body = json["body"];
+    if (!intp(json["changed_files"])) error("Expected integer");
     retval.changed_files = json["changed_files"];
     retval.closed_at = json["closed_at"];
+    if (!intp(json["comments"])) error("Expected integer");
     retval.comments = json["comments"];
     retval.comments_url = json["comments_url"];
+    if (!intp(json["commits"])) error("Expected integer");
     retval.commits = json["commits"];
     retval.commits_url = json["commits_url"];
     retval.created_at = json["created_at"];
+    if (!intp(json["deletions"])) error("Expected integer");
     retval.deletions = json["deletions"];
     retval.diff_url = json["diff_url"];
     Base_from_JSON(json["head"]);
     retval.head = json["head"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.issue_url = json["issue_url"];
     Links_from_JSON(json["_links"]);
@@ -346,11 +353,13 @@ PullRequest PullRequest_from_JSON(mixed json) {
     MergedBy_from_JSON(json["merged_by"]);
     retval.merged_by = json["merged_by"];
     retval.milestone = json["milestone"];
+    if (!intp(json["number"])) error("Expected integer");
     retval.number = json["number"];
     retval.patch_url = json["patch_url"];
     retval.rebaseable = json["rebaseable"];
     retval.requested_reviewers = json["requested_reviewers"];
     retval.review_comment_url = json["review_comment_url"];
+    if (!intp(json["review_comments"])) error("Expected integer");
     retval.review_comments = json["review_comments"];
     retval.review_comments_url = json["review_comments_url"];
     retval.state = json["state"];
@@ -568,7 +577,9 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.events_url = json["events_url"];
     if (json["fork"] != Standards.JSON.true && json["fork"] != Standards.JSON.false) error("Expected bool");
     retval.fork = json["fork"];
+    if (!intp(json["forks"])) error("Expected integer");
     retval.forks = json["forks"];
+    if (!intp(json["forks_count"])) error("Expected integer");
     retval.forks_count = json["forks_count"];
     retval.forks_url = json["forks_url"];
     retval.full_name = json["full_name"];
@@ -589,6 +600,7 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.homepage = json["homepage"];
     retval.hooks_url = json["hooks_url"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.issue_comment_url = json["issue_comment_url"];
     retval.issue_events_url = json["issue_events_url"];
@@ -602,7 +614,9 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.mirror_url = json["mirror_url"];
     retval.name = json["name"];
     retval.notifications_url = json["notifications_url"];
+    if (!intp(json["open_issues"])) error("Expected integer");
     retval.open_issues = json["open_issues"];
+    if (!intp(json["open_issues_count"])) error("Expected integer");
     retval.open_issues_count = json["open_issues_count"];
     MergedBy_from_JSON(json["owner"]);
     retval.owner = json["owner"];
@@ -611,8 +625,10 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     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"];
+    if (!intp(json["size"])) error("Expected integer");
     retval.size = json["size"];
     retval.ssh_url = json["ssh_url"];
+    if (!intp(json["stargazers_count"])) error("Expected integer");
     retval.stargazers_count = json["stargazers_count"];
     retval.stargazers_url = json["stargazers_url"];
     retval.statuses_url = json["statuses_url"];
@@ -624,7 +640,9 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.trees_url = json["trees_url"];
     retval.updated_at = json["updated_at"];
     retval.url = json["url"];
+    if (!intp(json["watchers"])) error("Expected integer");
     retval.watchers = json["watchers"];
+    if (!intp(json["watchers_count"])) error("Expected integer");
     retval.watchers_count = json["watchers_count"];
 
     return retval;
@@ -684,6 +702,7 @@ MergedBy MergedBy_from_JSON(mixed json) {
     retval.gists_url = json["gists_url"];
     retval.gravatar_id = json["gravatar_id"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.login = json["login"];
     retval.organizations_url = json["organizations_url"];
@@ -787,6 +806,7 @@ class TopLevelRepo {
 TopLevelRepo TopLevelRepo_from_JSON(mixed json) {
     TopLevelRepo retval = TopLevelRepo();
 
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
     retval.url = json["url"];
diff --git a/base/pike/test/inputs/json/misc/0b91a.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/0b91a.json/default/TopLevel.pmod
index 26aec79..519ab28 100644
--- a/base/pike/test/inputs/json/misc/0b91a.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/0b91a.json/default/TopLevel.pmod
@@ -82,6 +82,7 @@ ResponseInfo ResponseInfo_from_JSON(mixed json) {
     ResponseInfo retval = ResponseInfo();
 
     retval.developer_message = json["developerMessage"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -106,8 +107,11 @@ class Resultset {
 Resultset Resultset_from_JSON(mixed json) {
     Resultset retval = Resultset();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pagesize"])) error("Expected integer");
     retval.pagesize = json["pagesize"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod
index 9fd740d..7c68fbc 100644
--- a/base/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/0cffa.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -434,6 +435,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -458,8 +460,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
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 b1d37a7..5f41833 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
@@ -33,6 +33,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.next = json["next"];
     retval.previous = json["previous"];
@@ -84,16 +85,20 @@ class Result {
 Result Result_from_JSON(mixed json) {
     Result retval = Result();
 
+    if (!intp(json["active_screens"])) error("Expected integer");
     retval.active_screens = json["active_screens"];
     retval.collections = json["collections"];
     retval.details = json["details"];
+    if (!intp(json["duration"])) error("Expected integer");
     retval.duration = json["duration"];
     FavMovie_from_JSON(json["fav_movie"]);
     retval.fav_movie = json["fav_movie"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.images = json["images"];
     retval.language = ResultLanguage_from_JSON(json["language"]);
     retval.release_date = json["release_date"];
+    if (!intp(json["stars"])) error("Expected integer");
     retval.stars = json["stars"];
     if (!has_index(json, "tags")) error("Missing required property");
     retval.tags = json["tags"];
@@ -101,6 +106,7 @@ Result Result_from_JSON(mixed json) {
     retval.videos = json["videos"];
     VoteScore_from_JSON(json["vote_score"]);
     retval.vote_score = json["vote_score"];
+    if (!intp(json["watches"])) error("Expected integer");
     retval.watches = json["watches"];
 
     return retval;
@@ -127,6 +133,7 @@ class Collection {
 Collection Collection_from_JSON(mixed json) {
     Collection retval = Collection();
 
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.movies = json["movies"];
     retval.name = json["name"];
@@ -164,6 +171,7 @@ Detail Detail_from_JSON(mixed json) {
 
     retval.cast = json["cast"];
     retval.director = json["director"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.language = DetailLanguage_from_JSON(json["language"]);
     retval.storyline = json["storyline"];
@@ -234,7 +242,9 @@ class Image {
 Image Image_from_JSON(mixed json) {
     Image retval = Image();
 
+    if (!intp(json["favs"])) error("Expected integer");
     retval.favs = json["favs"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.thumbnail = json["thumbnail"];
     retval.type = Type_from_JSON(json["type"]);
@@ -309,8 +319,11 @@ class VoteScore {
 VoteScore VoteScore_from_JSON(mixed json) {
     VoteScore retval = VoteScore();
 
+    if (!intp(json["avg"])) error("Expected integer");
     retval.avg = json["avg"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod
index a739b4b..a08a673 100644
--- a/base/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/127a1.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -433,6 +434,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -457,8 +459,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/13d8d.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/13d8d.json/default/TopLevel.pmod
index 1949d66..e5982ea 100644
--- a/base/pike/test/inputs/json/misc/13d8d.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/13d8d.json/default/TopLevel.pmod
@@ -51,6 +51,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
 
     retval.category = json["category"];
     retval.context = json["context"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     Location_from_JSON(json["location"]);
     retval.location = json["location"];
@@ -108,6 +109,7 @@ class Street {
 Street Street_from_JSON(mixed json) {
     Street retval = Street();
 
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
 
diff --git a/base/pike/test/inputs/json/misc/16bc5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/16bc5.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/16bc5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/16bc5.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/176f1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/176f1.json/default/TopLevel.pmod
index df06225..d666326 100644
--- a/base/pike/test/inputs/json/misc/176f1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/176f1.json/default/TopLevel.pmod
@@ -34,6 +34,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.message = json["message"];
+    if (!intp(json["responseTime"])) error("Expected integer");
     retval.response_time = json["responseTime"];
     Results_from_JSON(json["Results"]);
     retval.results = json["Results"];
diff --git a/base/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/1a7f5.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/1b28c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/1b28c.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/1b28c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/1b28c.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     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 ec55d7b..85205fa 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
@@ -55,8 +55,11 @@ class Meta {
 Meta Meta_from_JSON(mixed json) {
     Meta retval = Meta();
 
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
@@ -122,10 +125,12 @@ Object Object_from_JSON(mixed json) {
     if (json["current"] != Standards.JSON.true && json["current"] != Standards.JSON.false) error("Expected bool");
     retval.current = json["current"];
     retval.description = json["description"];
+    if (!intp(json["district"])) error("Expected integer");
     retval.district = json["district"];
     retval.enddate = json["enddate"];
     Extra_from_JSON(json["extra"]);
     retval.extra = json["extra"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (!has_index(json, "leadership_title")) error("Missing required property");
     retval.leadership_title = json["leadership_title"];
@@ -238,10 +243,12 @@ Person Person_from_JSON(mixed json) {
 
     retval.bioguideid = json["bioguideid"];
     retval.birthday = json["birthday"];
+    if (!intp(json["cspanid"])) error("Expected integer");
     retval.cspanid = json["cspanid"];
     retval.firstname = json["firstname"];
     retval.gender = Gender_from_JSON(json["gender"]);
     retval.gender_label = GenderLabel_from_JSON(json["gender_label"]);
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.lastname = json["lastname"];
     retval.link = json["link"];
diff --git a/base/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod
index 6deec5a..ecad596 100644
--- a/base/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/262f0.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod
index 1e2044d..05011b0 100644
--- a/base/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/26b49.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -429,6 +430,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -453,8 +455,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
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 ff7cd28..cbc57e9 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
@@ -154,12 +154,15 @@ View View_from_JSON(mixed json) {
 
     retval.attribution = json["attribution"];
     retval.attribution_link = json["attributionLink"];
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.description = json["description"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -168,6 +171,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     Metadata_from_JSON(json["metadata"]);
@@ -175,27 +179,36 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
     retval.tags = json["tags"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -244,8 +257,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Format_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = json["renderTypeName"];
     retval.table_column_id = json["tableColumnId"];
@@ -283,7 +298,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
 
     retval.average = json["average"];
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.sum = json["sum"];
@@ -309,6 +326,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
@@ -797,6 +815,7 @@ class Expression {
 Expression Expression_from_JSON(mixed json) {
     Expression retval = Expression();
 
+    if (!intp(json["columnId"])) error("Expected integer");
     retval.column_id = json["columnId"];
     retval.type = json["type"];
 
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 f28026c..51c4016 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
@@ -256,9 +256,11 @@ ChildData ChildData_from_JSON(mixed json) {
     if (!has_index(json, "distinguished")) error("Missing required property");
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -283,6 +285,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -297,6 +300,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
     if (has_index(json, "secure_media") && json["secure_media"] != Val.null) Media_from_JSON(json["secure_media"]);
@@ -316,11 +320,14 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.subreddit_type = SubredditType_from_JSON(json["subreddit_type"]);
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     if (!has_index(json, "thumbnail_height")) error("Missing required property");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     if (!has_index(json, "thumbnail_width")) error("Missing required property");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -404,16 +411,20 @@ Oembed Oembed_from_JSON(mixed json) {
     Oembed retval = Oembed();
 
     retval.description = json["description"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.html = json["html"];
     retval.provider_name = json["provider_name"];
     retval.provider_url = json["provider_url"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     retval.thumbnail_height = json["thumbnail_height"];
     retval.thumbnail_url = json["thumbnail_url"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
     retval.type = json["type"];
     retval.version = json["version"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
@@ -531,8 +542,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
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 7905520..1c8ee97 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
@@ -253,9 +253,11 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = Distinguished_from_JSON(json["distinguished"]);
     retval.domain = Domain_from_JSON(json["domain"]);
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (arrayp(json["edited"])) error("Unexpected array");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -276,6 +278,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -290,6 +293,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     MediaEmbed_from_JSON(json["secure_media_embed"]);
@@ -308,11 +312,14 @@ ChildData ChildData_from_JSON(mixed json) {
     if (!has_index(json, "suggested_sort")) error("Missing required property");
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     if (!has_index(json, "thumbnail_height")) error("Missing required property");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     if (!has_index(json, "thumbnail_width")) error("Missing required property");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -445,8 +452,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
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 1e65eeb..024e241 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
@@ -55,8 +55,11 @@ class Meta {
 Meta Meta_from_JSON(mixed json) {
     Meta retval = Meta();
 
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
@@ -131,6 +134,7 @@ Object Object_from_JSON(mixed json) {
     retval.enddate = json["enddate"];
     Extra_from_JSON(json["extra"]);
     retval.extra = json["extra"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (!has_index(json, "leadership_title")) error("Missing required property");
     retval.leadership_title = json["leadership_title"];
@@ -246,10 +250,12 @@ Person Person_from_JSON(mixed json) {
 
     retval.bioguideid = json["bioguideid"];
     retval.birthday = json["birthday"];
+    if (!intp(json["cspanid"])) error("Expected integer");
     retval.cspanid = json["cspanid"];
     retval.firstname = json["firstname"];
     retval.gender = Gender_from_JSON(json["gender"]);
     retval.gender_label = GenderLabel_from_JSON(json["gender_label"]);
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.lastname = json["lastname"];
     retval.link = json["link"];
diff --git a/base/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod
index 0cb237c..0e65e03 100644
--- a/base/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/2df80.json/default/TopLevel.pmod
@@ -177,9 +177,12 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pages"])) error("Expected integer");
     retval.pages = json["pages"];
     retval.per_page = json["per_page"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod
index e42c16f..0210fc1 100644
--- a/base/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/32431.json/default/TopLevel.pmod
@@ -176,6 +176,7 @@ Properties Properties_from_JSON(mixed json) {
     if (!has_index(json, "dmin")) error("Missing required property");
     retval.dmin = json["dmin"];
     retval.felt = json["felt"];
+    if (!intp(json["gap"])) error("Expected integer");
     if (!has_index(json, "gap")) error("Missing required property");
     retval.gap = json["gap"];
     retval.ids = json["ids"];
@@ -183,19 +184,25 @@ Properties Properties_from_JSON(mixed json) {
     retval.mag_type = MagType_from_JSON(json["magType"]);
     retval.mmi = json["mmi"];
     retval.net = json["net"];
+    if (!intp(json["nst"])) error("Expected integer");
     if (!has_index(json, "nst")) error("Missing required property");
     retval.nst = json["nst"];
     retval.place = json["place"];
     retval.rms = (float)json["rms"];
+    if (!intp(json["sig"])) error("Expected integer");
     retval.sig = json["sig"];
     retval.sources = json["sources"];
     retval.status = Status_from_JSON(json["status"]);
+    if (!intp(json["time"])) error("Expected integer");
     retval.time = json["time"];
     retval.title = json["title"];
+    if (!intp(json["tsunami"])) error("Expected integer");
     retval.tsunami = json["tsunami"];
     retval.type = PropertiesType_from_JSON(json["type"]);
     retval.types = json["types"];
+    if (!intp(json["tz"])) error("Expected integer");
     retval.tz = json["tz"];
+    if (!intp(json["updated"])) error("Expected integer");
     retval.updated = json["updated"];
     retval.url = json["url"];
 
@@ -263,8 +270,11 @@ Metadata Metadata_from_JSON(mixed json) {
     Metadata retval = Metadata();
 
     retval.api = json["api"];
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["generated"])) error("Expected integer");
     retval.generated = json["generated"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
     retval.title = json["title"];
     retval.url = json["url"];
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 a03774c..f44b7c0 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
@@ -51,9 +51,11 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     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"];
+    if (!intp(json["GenderTypeID"])) error("Expected integer");
     retval.gender_type_id = json["GenderTypeID"];
     retval.notes = json["Notes"];
     retval.parliamentary_name = json["ParliamentaryName"];
+    if (!intp(json["PersonID"])) error("Expected integer");
     retval.person_id = json["PersonID"];
     retval.photo_url = json["PhotoURL"];
     retval.preferred_name = json["PreferredName"];
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 b815395..87714ba 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
@@ -39,11 +39,14 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
@@ -145,10 +148,13 @@ class Result {
 Result Result_from_JSON(mixed json) {
     Result retval = Result();
 
+    if (!intp(json["cost_absolute"])) error("Expected integer");
     if (!has_index(json, "cost_absolute")) error("Missing required property");
     retval.cost_absolute = json["cost_absolute"];
+    if (!intp(json["cost_max"])) error("Expected integer");
     if (!has_index(json, "cost_max")) error("Missing required property");
     retval.cost_max = json["cost_max"];
+    if (!intp(json["cost_min"])) error("Expected integer");
     if (!has_index(json, "cost_min")) error("Missing required property");
     retval.cost_min = json["cost_min"];
     retval.created_at = json["created_at"];
@@ -156,9 +162,11 @@ Result Result_from_JSON(mixed json) {
     retval.direct_rep_costs_max = json["direct_rep_costs_max"];
     retval.direct_rep_costs_min = json["direct_rep_costs_min"];
     retval.end_date = json["end_date"];
+    if (!intp(json["eur_sources_grants"])) error("Expected integer");
     retval.eur_sources_grants = json["eur_sources_grants"];
     if (!has_index(json, "eur_sources_grants_src")) error("Missing required property");
     retval.eur_sources_grants_src = json["eur_sources_grants_src"];
+    if (!intp(json["eur_sources_procurement"])) error("Expected integer");
     retval.eur_sources_procurement = json["eur_sources_procurement"];
     if (!has_index(json, "eur_sources_procurement_src")) error("Missing required property");
     retval.eur_sources_procurement_src = json["eur_sources_procurement_src"];
@@ -168,27 +176,37 @@ Result Result_from_JSON(mixed json) {
     retval.no_clients = json["no_clients"];
     if (!has_index(json, "other_financial_information")) error("Missing required property");
     retval.other_financial_information = json["other_financial_information"];
+    if (!intp(json["other_sources_contributions"])) error("Expected integer");
     if (!has_index(json, "other_sources_contributions")) error("Missing required property");
     retval.other_sources_contributions = json["other_sources_contributions"];
+    if (!intp(json["other_sources_donation"])) error("Expected integer");
     if (!has_index(json, "other_sources_donation")) error("Missing required property");
     retval.other_sources_donation = json["other_sources_donation"];
+    if (!intp(json["other_sources_total"])) error("Expected integer");
     if (!has_index(json, "other_sources_total")) error("Missing required property");
     retval.other_sources_total = json["other_sources_total"];
+    if (!intp(json["public_financing_infranational"])) error("Expected integer");
     if (!has_index(json, "public_financing_infranational")) error("Missing required property");
     retval.public_financing_infranational = json["public_financing_infranational"];
+    if (!intp(json["public_financing_national"])) error("Expected integer");
     if (!has_index(json, "public_financing_national")) error("Missing required property");
     retval.public_financing_national = json["public_financing_national"];
+    if (!intp(json["public_financing_total"])) error("Expected integer");
     if (!has_index(json, "public_financing_total")) error("Missing required property");
     retval.public_financing_total = json["public_financing_total"];
     retval.representative = json["representative"];
     retval.start_date = json["start_date"];
     retval.status = Status_from_JSON(json["status"]);
+    if (!intp(json["total_budget"])) error("Expected integer");
     if (!has_index(json, "total_budget")) error("Missing required property");
     retval.total_budget = json["total_budget"];
+    if (!intp(json["turnover_absolute"])) error("Expected integer");
     if (!has_index(json, "turnover_absolute")) error("Missing required property");
     retval.turnover_absolute = json["turnover_absolute"];
+    if (!intp(json["turnover_max"])) error("Expected integer");
     if (!has_index(json, "turnover_max")) error("Missing required property");
     retval.turnover_max = json["turnover_max"];
+    if (!intp(json["turnover_min"])) error("Expected integer");
     if (!has_index(json, "turnover_min")) error("Missing required property");
     retval.turnover_min = json["turnover_min"];
     retval.type = ResultType_from_JSON(json["type"]);
@@ -227,6 +245,7 @@ class CustomIncome {
 CustomIncome CustomIncome_from_JSON(mixed json) {
     CustomIncome retval = CustomIncome();
 
+    if (!intp(json["amount"])) error("Expected integer");
     retval.amount = json["amount"];
     retval.created_at = json["created_at"];
     retval.id = json["id"];
diff --git a/base/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod
index af60ed7..a23ad64 100644
--- a/base/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/34702.json/default/TopLevel.pmod
@@ -36,6 +36,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     Crs_from_JSON(json["crs"]);
     retval.crs = json["crs"];
     retval.features = json["features"];
+    if (!intp(json["totalFeatures"])) error("Expected integer");
     retval.total_features = json["totalFeatures"];
     retval.type = json["type"];
 
@@ -212,6 +213,7 @@ FeatureProperties FeatureProperties_from_JSON(mixed json) {
     if (!has_index(json, "no")) error("Missing required property");
     retval.no = json["no"];
     retval.phone = (float)json["phone"];
+    if (!intp(json["postcode"])) error("Expected integer");
     retval.postcode = json["postcode"];
     retval.psa = json["psa"];
     retval.region = Region_from_JSON(json["region"]);
diff --git a/base/pike/test/inputs/json/misc/3659d.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/3659d.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/3659d.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/3659d.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/3e9a3.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/3e9a3.json/default/TopLevel.pmod
index df06225..d666326 100644
--- a/base/pike/test/inputs/json/misc/3e9a3.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/3e9a3.json/default/TopLevel.pmod
@@ -34,6 +34,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.message = json["message"];
+    if (!intp(json["responseTime"])) error("Expected integer");
     retval.response_time = json["responseTime"];
     Results_from_JSON(json["Results"]);
     retval.results = json["Results"];
diff --git a/base/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod
index 8425b9e..0bc486c 100644
--- a/base/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/3f1ce.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
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 9d55131..ec530a6 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
@@ -157,12 +157,15 @@ View View_from_JSON(mixed json) {
     View retval = View();
 
     retval.attribution = json["attribution"];
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.description = json["description"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -171,6 +174,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     License_from_JSON(json["license"]);
     retval.license = json["license"];
@@ -181,28 +185,37 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
     retval.row_class = json["rowClass"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
     retval.tags = json["tags"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -251,8 +264,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Query_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = json["renderTypeName"];
     retval.table_column_id = json["tableColumnId"];
@@ -290,7 +305,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
 
     retval.average = json["average"];
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.sum = json["sum"];
@@ -316,6 +333,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
diff --git a/base/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod
index 725fa88..1391ba0 100644
--- a/base/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/437e7.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -418,6 +419,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -442,8 +444,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/43970.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/43970.json/default/TopLevel.pmod
index 1ed55b4..05b18f2 100644
--- a/base/pike/test/inputs/json/misc/43970.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/43970.json/default/TopLevel.pmod
@@ -37,6 +37,7 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["ID"])) error("Expected integer");
     retval.id = json["ID"];
     retval.name = json["Name"];
     retval.notes = json["Notes"];
diff --git a/base/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod
index 66fcfd9..ec53a3f 100644
--- a/base/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/458db.json/default/TopLevel.pmod
@@ -82,6 +82,7 @@ ResponseInfo ResponseInfo_from_JSON(mixed json) {
     ResponseInfo retval = ResponseInfo();
 
     retval.developer_message = json["developerMessage"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -106,8 +107,11 @@ class Resultset {
 Resultset Resultset_from_JSON(mixed json) {
     Resultset retval = Resultset();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pagesize"])) error("Expected integer");
     retval.pagesize = json["pagesize"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/4961a.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4961a.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/4961a.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4961a.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/4a0d7.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4a0d7.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/4a0d7.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4a0d7.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod
index 7bafbd8..efd0b74 100644
--- a/base/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4a455.json/default/TopLevel.pmod
@@ -36,6 +36,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     Crs_from_JSON(json["crs"]);
     retval.crs = json["crs"];
     retval.features = json["features"];
+    if (!intp(json["totalFeatures"])) error("Expected integer");
     retval.total_features = json["totalFeatures"];
     retval.type = json["type"];
 
diff --git a/base/pike/test/inputs/json/misc/4c547.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4c547.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/4c547.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4c547.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
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 fcacec3..3790e0d 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
@@ -253,9 +253,11 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -278,6 +280,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -292,6 +295,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
     if (has_index(json, "secure_media") && json["secure_media"] != Val.null) Media_from_JSON(json["secure_media"]);
@@ -310,11 +314,14 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.subreddit_type = SubredditType_from_JSON(json["subreddit_type"]);
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     if (!has_index(json, "thumbnail_height")) error("Missing required property");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     if (!has_index(json, "thumbnail_width")) error("Missing required property");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -390,16 +397,20 @@ Oembed Oembed_from_JSON(mixed json) {
 
     retval.author_name = json["author_name"];
     retval.author_url = json["author_url"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.html = json["html"];
     retval.provider_name = json["provider_name"];
     retval.provider_url = json["provider_url"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     retval.thumbnail_height = json["thumbnail_height"];
     retval.thumbnail_url = json["thumbnail_url"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
     retval.type = json["type"];
     retval.version = json["version"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
@@ -517,8 +528,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/4e336.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/4e336.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/4e336.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/4e336.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
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 144958a..2457ec2 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
@@ -39,11 +39,14 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
diff --git a/base/pike/test/inputs/json/misc/5eae5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/5eae5.json/default/TopLevel.pmod
index 187a58a..4c4fa99 100644
--- a/base/pike/test/inputs/json/misc/5eae5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/5eae5.json/default/TopLevel.pmod
@@ -40,6 +40,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
     retval.date = json["Date"];
+    if (!intp(json["ID"])) error("Expected integer");
     retval.id = json["ID"];
     retval.sponsor = json["Sponsor"];
     retval.title = json["Title"];
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 416e78f..9ed2f8c 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
@@ -154,12 +154,15 @@ View View_from_JSON(mixed json) {
 
     retval.attribution = json["attribution"];
     retval.attribution_link = json["attributionLink"];
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.description = json["description"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -168,6 +171,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     Metadata_from_JSON(json["metadata"]);
@@ -175,27 +179,36 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
     retval.tags = json["tags"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -244,8 +257,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Format_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = TypeName_from_JSON(json["renderTypeName"]);
     retval.table_column_id = json["tableColumnId"];
@@ -278,7 +293,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
     CachedContents retval = CachedContents();
 
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.top = json["top"];
@@ -303,6 +320,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
@@ -795,6 +813,7 @@ class Expression {
 Expression Expression_from_JSON(mixed json) {
     Expression retval = Expression();
 
+    if (!intp(json["columnId"])) error("Expected integer");
     retval.column_id = json["columnId"];
     retval.type = json["type"];
 
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 a529abe..8b08c77 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
@@ -154,12 +154,15 @@ View View_from_JSON(mixed json) {
 
     retval.attribution = json["attribution"];
     retval.attribution_link = json["attributionLink"];
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.description = json["description"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -168,6 +171,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     Metadata_from_JSON(json["metadata"]);
@@ -175,27 +179,36 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
     retval.tags = json["tags"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -247,8 +260,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Format_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = TypeName_from_JSON(json["renderTypeName"]);
     retval.table_column_id = json["tableColumnId"];
@@ -281,7 +296,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
     CachedContents retval = CachedContents();
 
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.top = json["top"];
@@ -306,6 +323,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
@@ -792,6 +810,7 @@ class Expression {
 Expression Expression_from_JSON(mixed json) {
     Expression retval = Expression();
 
+    if (!intp(json["columnId"])) error("Expected integer");
     retval.column_id = json["columnId"];
     retval.type = json["type"];
 
diff --git a/base/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod
index 05a9bc8..14459c5 100644
--- a/base/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/65dec.json/default/TopLevel.pmod
@@ -53,6 +53,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.code = json["code"];
     retval.gatherer_code = json["gathererCode"];
     retval.magic_cards_info_code = json["magicCardsInfoCode"];
+    if (!intp(json["mkm_id"])) error("Expected integer");
     retval.mkm_id = json["mkm_id"];
     retval.mkm_name = json["mkm_name"];
     retval.name = json["name"];
@@ -132,6 +133,7 @@ Card Card_from_JSON(mixed json) {
     Card retval = Card();
 
     retval.artist = json["artist"];
+    if (!intp(json["cmc"])) error("Expected integer");
     retval.cmc = json["cmc"];
     retval.color_identity = json["colorIdentity"];
     retval.colors = json["colors"];
@@ -142,6 +144,7 @@ Card Card_from_JSON(mixed json) {
     retval.legalities = json["legalities"];
     retval.mana_cost = json["manaCost"];
     retval.mci_number = json["mciNumber"];
+    if (!intp(json["multiverseid"])) error("Expected integer");
     retval.multiverseid = json["multiverseid"];
     retval.name = json["name"];
     retval.original_text = json["originalText"];
diff --git a/base/pike/test/inputs/json/misc/6617c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/6617c.json/default/TopLevel.pmod
index 232c9e6..7327548 100644
--- a/base/pike/test/inputs/json/misc/6617c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/6617c.json/default/TopLevel.pmod
@@ -34,6 +34,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     IssPosition_from_JSON(json["iss_position"]);
     retval.iss_position = json["iss_position"];
     retval.message = json["message"];
+    if (!intp(json["timestamp"])) error("Expected integer");
     retval.timestamp = json["timestamp"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/67c03.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/67c03.json/default/TopLevel.pmod
index de4357b..947734f 100644
--- a/base/pike/test/inputs/json/misc/67c03.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/67c03.json/default/TopLevel.pmod
@@ -32,6 +32,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.message = json["message"];
+    if (!intp(json["number"])) error("Expected integer");
     retval.number = json["number"];
     retval.people = json["people"];
 
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 d50db6f..10748e5 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
@@ -73,14 +73,21 @@ Tx Tx_from_JSON(mixed json) {
     retval.double_spend = json["double_spend"];
     retval.hash = json["hash"];
     retval.inputs = json["inputs"];
+    if (!intp(json["lock_time"])) error("Expected integer");
     retval.lock_time = json["lock_time"];
     retval.out = json["out"];
     retval.relayed_by = json["relayed_by"];
+    if (!intp(json["size"])) error("Expected integer");
     retval.size = json["size"];
+    if (!intp(json["time"])) error("Expected integer");
     retval.time = json["time"];
+    if (!intp(json["tx_index"])) error("Expected integer");
     retval.tx_index = json["tx_index"];
+    if (!intp(json["ver"])) error("Expected integer");
     retval.ver = json["ver"];
+    if (!intp(json["vin_sz"])) error("Expected integer");
     retval.vin_sz = json["vin_sz"];
+    if (!intp(json["vout_sz"])) error("Expected integer");
     retval.vout_sz = json["vout_sz"];
 
     return retval;
@@ -108,6 +115,7 @@ Input Input_from_JSON(mixed json) {
     Out_from_JSON(json["prev_out"]);
     retval.prev_out = json["prev_out"];
     retval.script = json["script"];
+    if (!intp(json["sequence"])) error("Expected integer");
     retval.sequence = json["sequence"];
 
     return retval;
@@ -141,12 +149,16 @@ Out Out_from_JSON(mixed json) {
     Out retval = Out();
 
     retval.addr = json["addr"];
+    if (!intp(json["n"])) error("Expected integer");
     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"];
+    if (!intp(json["tx_index"])) error("Expected integer");
     retval.tx_index = json["tx_index"];
+    if (!intp(json["type"])) error("Expected integer");
     retval.type = json["type"];
+    if (!intp(json["value"])) error("Expected integer");
     retval.value = json["value"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/6c155.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/6c155.json/default/TopLevel.pmod
index d06294e..6a6e024 100644
--- a/base/pike/test/inputs/json/misc/6c155.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/6c155.json/default/TopLevel.pmod
@@ -82,6 +82,7 @@ ResponseInfo ResponseInfo_from_JSON(mixed json) {
     ResponseInfo retval = ResponseInfo();
 
     retval.developer_message = json["developerMessage"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -106,8 +107,11 @@ class Resultset {
 Resultset Resultset_from_JSON(mixed json) {
     Resultset retval = Resultset();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pagesize"])) error("Expected integer");
     retval.pagesize = json["pagesize"];
 
     return retval;
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 e381894..4a79d5f 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
@@ -255,9 +255,11 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -282,6 +284,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -296,6 +299,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
     if (has_index(json, "secure_media") && json["secure_media"] != Val.null) Media_from_JSON(json["secure_media"]);
@@ -316,11 +320,14 @@ ChildData ChildData_from_JSON(mixed json) {
     if (!has_index(json, "suggested_sort")) error("Missing required property");
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     if (!has_index(json, "thumbnail_height")) error("Missing required property");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     if (!has_index(json, "thumbnail_width")) error("Missing required property");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -393,16 +400,20 @@ Oembed Oembed_from_JSON(mixed json) {
     Oembed retval = Oembed();
 
     retval.description = json["description"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.html = json["html"];
     retval.provider_name = json["provider_name"];
     retval.provider_url = json["provider_url"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     retval.thumbnail_height = json["thumbnail_height"];
     retval.thumbnail_url = json["thumbnail_url"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
     retval.type = json["type"];
     retval.version = json["version"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
@@ -521,8 +532,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod
index 42eb63b..0053ad8 100644
--- a/base/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/6dec6.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/6eb00.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/6eb00.json/default/TopLevel.pmod
index 3158a43..c40fdda 100644
--- a/base/pike/test/inputs/json/misc/6eb00.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/6eb00.json/default/TopLevel.pmod
@@ -37,7 +37,9 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["DirectorateID"])) error("Expected integer");
     retval.directorate_id = json["DirectorateID"];
+    if (!intp(json["Id"])) error("Expected integer");
     retval.id = json["Id"];
     retval.name = json["Name"];
 
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 a9d7a2e..19e8f7a 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
@@ -39,11 +39,14 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
@@ -217,6 +220,7 @@ Result Result_from_JSON(mixed json) {
     retval.be_office_street = json["be_office_street"];
     retval.be_office_town = json["be_office_town"];
     retval.code_of_conduct = json["code_of_conduct"];
+    if (!intp(json["contact_country"])) error("Expected integer");
     retval.contact_country = json["contact_country"];
     retval.created_at = json["created_at"];
     retval.entity = json["entity"];
@@ -240,15 +244,21 @@ Result Result_from_JSON(mixed json) {
     retval.last_update_date = json["last_update_date"];
     retval.legal = json["legal"];
     retval.legal_status = json["legal_status"];
+    if (!intp(json["main_category"])) error("Expected integer");
     retval.main_category = json["main_category"];
     retval.main_category_title = json["main_category_title"];
+    if (!intp(json["members"])) error("Expected integer");
     retval.members = json["members"];
+    if (!intp(json["members_100"])) error("Expected integer");
     if (!has_index(json, "members_100")) error("Missing required property");
     retval.members_100 = json["members_100"];
+    if (!intp(json["members_25"])) error("Expected integer");
     if (!has_index(json, "members_25")) error("Missing required property");
     retval.members_25 = json["members_25"];
+    if (!intp(json["members_50"])) error("Expected integer");
     if (!has_index(json, "members_50")) error("Missing required property");
     retval.members_50 = json["members_50"];
+    if (!intp(json["members_75"])) error("Expected integer");
     if (!has_index(json, "members_75")) error("Missing required property");
     retval.members_75 = json["members_75"];
     retval.members_fte = (float)json["members_fte"];
@@ -256,6 +266,7 @@ Result Result_from_JSON(mixed json) {
     retval.native_name = json["native_name"];
     if (!has_index(json, "networking")) error("Missing required property");
     retval.networking = json["networking"];
+    if (!intp(json["number_of_natural_persons"])) error("Expected integer");
     if (!has_index(json, "number_of_natural_persons")) error("Missing required property");
     retval.number_of_natural_persons = json["number_of_natural_persons"];
     if (!has_index(json, "other_code_of_conduct")) error("Missing required property");
@@ -263,6 +274,7 @@ Result Result_from_JSON(mixed json) {
     retval.registration_date = json["registration_date"];
     retval.status = Status_from_JSON(json["status"]);
     retval.structure_members = json["structure_members"];
+    if (!intp(json["sub_category"])) error("Expected integer");
     retval.sub_category = json["sub_category"];
     retval.sub_category_title = json["sub_category_title"];
     retval.updated_at = json["updated_at"];
diff --git a/base/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod
index d34a4db..e9deb7d 100644
--- a/base/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7681c.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -435,6 +436,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -459,8 +461,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/7df41.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7df41.json/default/TopLevel.pmod
index 079271f..99c3908 100644
--- a/base/pike/test/inputs/json/misc/7df41.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7df41.json/default/TopLevel.pmod
@@ -68,8 +68,10 @@ class Pc {
 Pc Pc_from_JSON(mixed json) {
     Pc retval = Pc();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.label = json["label"];
+    if (!intp(json["peak24"])) error("Expected integer");
     retval.peak24 = json["peak24"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/7dfa6.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7dfa6.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/7dfa6.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7dfa6.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
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 b9fb7bb..d889b96 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
@@ -33,6 +33,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.next = json["next"];
     retval.previous = json["previous"];
@@ -89,12 +90,16 @@ Result Result_from_JSON(mixed json) {
     Group_from_JSON(json["group"]);
     retval.group = json["group"];
     retval.location = Location_from_JSON(json["location"]);
+    if (!intp(json["min_screens"])) error("Expected integer");
     retval.min_screens = json["min_screens"];
+    if (!intp(json["num_views"])) error("Expected integer");
     retval.num_views = json["num_views"];
     retval.showtimes = json["showtimes"];
+    if (!intp(json["stars"])) error("Expected integer");
     retval.stars = json["stars"];
     retval.tel = Tel_from_JSON(json["tel"]);
     retval.thai = json["thai"];
+    if (!intp(json["today_screens"])) error("Expected integer");
     retval.today_screens = json["today_screens"];
     retval.url = json["url"];
     retval.website = json["website"];
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 97c733e..5d428d2 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
@@ -63,6 +63,7 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["comments"])) error("Expected integer");
     retval.comments = json["comments"];
     retval.comments_url = json["comments_url"];
     retval.commits_url = json["commits_url"];
@@ -113,6 +114,7 @@ File File_from_JSON(mixed json) {
     if (!has_index(json, "language")) error("Missing required property");
     retval.language = Language_from_JSON(json["language"]);
     retval.raw_url = json["raw_url"];
+    if (!intp(json["size"])) error("Expected integer");
     retval.size = json["size"];
     retval.type = Type_from_JSON(json["type"]);
 
diff --git a/base/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod
index 4f60de6..12c7d61 100644
--- a/base/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/7fbfb.json/default/TopLevel.pmod
@@ -120,9 +120,12 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pages"])) error("Expected integer");
     retval.pages = json["pages"];
     retval.per_page = json["per_page"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
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 0a085c3..fef9a38 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
@@ -39,12 +39,15 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     if (json["next"] != Standards.JSON.true && json["next"] != Standards.JSON.false) error("Expected bool");
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
@@ -97,9 +100,12 @@ Result Result_from_JSON(mixed json) {
     Result retval = Result();
 
     retval.created_at = json["created_at"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["items"])) error("Expected integer");
     retval.items = json["items"];
     retval.name = json["name"];
+    if (!intp(json["parent"])) error("Expected integer");
     if (!has_index(json, "parent")) error("Missing required property");
     retval.parent = json["parent"];
     retval.updated_at = json["updated_at"];
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 5d2b5e0..f9d2832 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
@@ -255,9 +255,11 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -278,6 +280,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -292,6 +295,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     MediaEmbed_from_JSON(json["secure_media_embed"]);
@@ -309,11 +313,14 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.subreddit_type = SubredditType_from_JSON(json["subreddit_type"]);
     retval.suggested_sort = SuggestedSort_from_JSON(json["suggested_sort"]);
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     if (!has_index(json, "thumbnail_height")) error("Missing required property");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     if (!has_index(json, "thumbnail_width")) error("Missing required property");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -422,8 +429,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/88130.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/88130.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/88130.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/88130.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/8a62c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/8a62c.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/8a62c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/8a62c.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/9929c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/9929c.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/9929c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/9929c.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
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 937eb52..1db143f 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
@@ -39,11 +39,14 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
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 b71f05f..192fce6 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
@@ -68,6 +68,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.errors = json["errors"];
     retval.frequency = json["frequency"];
     retval.from_date = json["from_date"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
     if (json["premium"] != Standards.JSON.true && json["premium"] != Standards.JSON.false) error("Expected bool");
diff --git a/base/pike/test/inputs/json/misc/a1eca.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/a1eca.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/a1eca.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/a1eca.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
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 2a59a98..83078be 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
@@ -150,11 +150,14 @@ class View {
 View View_from_JSON(mixed json) {
     View retval = View();
 
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -163,6 +166,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     License_from_JSON(json["license"]);
     retval.license = json["license"];
@@ -173,27 +177,36 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
     retval.row_class = json["rowClass"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -242,8 +255,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Query_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = TypeName_from_JSON(json["renderTypeName"]);
     retval.table_column_id = json["tableColumnId"];
@@ -281,7 +296,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
 
     retval.average = json["average"];
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.sum = json["sum"];
@@ -307,6 +324,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
diff --git a/base/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/a45b0.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/ab0d1.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/abb4b.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/abb4b.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/abb4b.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/abb4b.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     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 34d49ba..2de4609 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
@@ -245,9 +245,11 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -270,6 +272,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -281,6 +284,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     MediaEmbed_from_JSON(json["secure_media_embed"]);
@@ -298,6 +302,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
diff --git a/base/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod
index 612dfdd..252c268 100644
--- a/base/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/af2d1.json/default/TopLevel.pmod
@@ -36,6 +36,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     Crs_from_JSON(json["crs"]);
     retval.crs = json["crs"];
     retval.features = json["features"];
+    if (!intp(json["totalFeatures"])) error("Expected integer");
     retval.total_features = json["totalFeatures"];
     retval.type = json["type"];
 
@@ -254,6 +255,7 @@ FeatureProperties FeatureProperties_from_JSON(mixed json) {
     retval.asset_numb = json["asset_numb"];
     if (!has_index(json, "comments")) error("Missing required property");
     retval.comments = json["comments"];
+    if (!intp(json["condition"])) error("Expected integer");
     retval.condition = json["condition"];
     if (!has_index(json, "constructi")) error("Missing required property");
     retval.constructi = json["constructi"];
@@ -269,6 +271,7 @@ FeatureProperties FeatureProperties_from_JSON(mixed json) {
     retval.folder_num = json["folder_num"];
     if (!has_index(json, "funding_ba")) error("Missing required property");
     retval.funding_ba = FundingBa_from_JSON(json["funding_ba"]);
+    if (!intp(json["historic_c"])) error("Expected integer");
     retval.historic_c = json["historic_c"];
     retval.inspection = json["inspection"];
     retval.inspectors = json["inspectors"];
@@ -276,8 +279,10 @@ FeatureProperties FeatureProperties_from_JSON(mixed json) {
     if (!has_index(json, "level_accu")) error("Missing required property");
     retval.level_accu = LevelAccu_from_JSON(json["level_accu"]);
     retval.material = Material_from_JSON(json["material"]);
+    if (!intp(json["mi_prinx"])) error("Expected integer");
     retval.mi_prinx = json["mi_prinx"];
     retval.mi_symbolo = MiSymbolo_from_JSON(json["mi_symbolo"]);
+    if (!intp(json["number_lan"])) error("Expected integer");
     retval.number_lan = json["number_lan"];
     if (!has_index(json, "owner")) error("Missing required property");
     retval.owner = json["owner"];
@@ -285,6 +290,7 @@ FeatureProperties FeatureProperties_from_JSON(mixed json) {
     retval.positional = LevelAccu_from_JSON(json["positional"]);
     if (!has_index(json, "project_nu")) error("Missing required property");
     retval.project_nu = json["project_nu"];
+    if (!intp(json["rec_id"])) error("Expected integer");
     retval.rec_id = json["rec_id"];
     if (!has_index(json, "record_cre")) error("Missing required property");
     retval.record_cre = json["record_cre"];
diff --git a/base/pike/test/inputs/json/misc/b6f2c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/b6f2c.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/b6f2c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/b6f2c.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/bb1ec.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/bb1ec.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/bb1ec.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/bb1ec.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     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 9a609db..74ed6f3 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
@@ -255,9 +255,11 @@ ChildData ChildData_from_JSON(mixed json) {
     if (!has_index(json, "distinguished")) error("Missing required property");
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -280,6 +282,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -294,6 +297,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     if (!has_index(json, "secure_media")) error("Missing required property");
     if (has_index(json, "secure_media") && json["secure_media"] != Val.null) Media_from_JSON(json["secure_media"]);
@@ -312,9 +316,12 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.subreddit_type = SubredditType_from_JSON(json["subreddit_type"]);
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -399,16 +406,20 @@ Oembed Oembed_from_JSON(mixed json) {
     Oembed retval = Oembed();
 
     retval.description = json["description"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.html = json["html"];
     retval.provider_name = json["provider_name"];
     retval.provider_url = json["provider_url"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     retval.thumbnail_height = json["thumbnail_height"];
     retval.thumbnail_url = json["thumbnail_url"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
     retval.type = json["type"];
     retval.version = json["version"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
@@ -527,8 +538,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/c0356.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/c0356.json/default/TopLevel.pmod
index 83ad53e..684c299 100644
--- a/base/pike/test/inputs/json/misc/c0356.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/c0356.json/default/TopLevel.pmod
@@ -79,6 +79,7 @@ Description Description_from_JSON(mixed json) {
     Description retval = Description();
 
     retval.base_period = json["base_period"];
+    if (!intp(json["missing"])) error("Expected integer");
     retval.missing = json["missing"];
     retval.title = json["title"];
 
diff --git a/base/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod
index d9b3df0..1f0f9da 100644
--- a/base/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/c3303.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -430,6 +431,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -454,8 +456,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod
index 1b5086d..992b117 100644
--- a/base/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/c8c7e.json/default/TopLevel.pmod
@@ -120,9 +120,12 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pages"])) error("Expected integer");
     retval.pages = json["pages"];
     retval.per_page = json["per_page"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod
index 62fb5e3..e183e4c 100644
--- a/base/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/cda6c.json/default/TopLevel.pmod
@@ -120,9 +120,12 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pages"])) error("Expected integer");
     retval.pages = json["pages"];
     retval.per_page = json["per_page"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/cf0d8.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/cf0d8.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/cf0d8.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/cf0d8.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/d0908.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/d0908.json/default/TopLevel.pmod
index d396953..a2c3877 100644
--- a/base/pike/test/inputs/json/misc/d0908.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/d0908.json/default/TopLevel.pmod
@@ -50,6 +50,7 @@ TotalPopulation TotalPopulation_from_JSON(mixed json) {
     TotalPopulation retval = TotalPopulation();
 
     retval.date = json["date"];
+    if (!intp(json["population"])) error("Expected integer");
     retval.population = json["population"];
 
     return retval;
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 6486de9..e5325d1 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
@@ -39,11 +39,14 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     Facets_from_JSON(json["facets"]);
     retval.facets = json["facets"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     if (json["previous"] != Standards.JSON.true && json["previous"] != Standards.JSON.false) error("Expected bool");
     retval.previous = json["previous"];
diff --git a/base/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod
index 8026d75..df2e214 100644
--- a/base/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dbfb3.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod
index d3fe66c..61fbb35 100644
--- a/base/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dc44f.json/default/TopLevel.pmod
@@ -53,6 +53,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.code = json["code"];
     retval.gatherer_code = json["gathererCode"];
     retval.magic_cards_info_code = json["magicCardsInfoCode"];
+    if (!intp(json["mkm_id"])) error("Expected integer");
     retval.mkm_id = json["mkm_id"];
     retval.mkm_name = json["mkm_name"];
     retval.name = json["name"];
@@ -140,6 +141,7 @@ Card Card_from_JSON(mixed json) {
     Card retval = Card();
 
     retval.artist = json["artist"];
+    if (!intp(json["cmc"])) error("Expected integer");
     retval.cmc = json["cmc"];
     retval.color_identity = json["colorIdentity"];
     retval.colors = json["colors"];
@@ -150,6 +152,7 @@ Card Card_from_JSON(mixed json) {
     retval.legalities = json["legalities"];
     retval.mana_cost = json["manaCost"];
     retval.mci_number = json["mciNumber"];
+    if (!intp(json["multiverseid"])) error("Expected integer");
     retval.multiverseid = json["multiverseid"];
     retval.name = json["name"];
     retval.original_text = json["originalText"];
diff --git a/base/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod
index d3fe66c..61fbb35 100644
--- a/base/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dd1ce.json/default/TopLevel.pmod
@@ -53,6 +53,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.code = json["code"];
     retval.gatherer_code = json["gathererCode"];
     retval.magic_cards_info_code = json["magicCardsInfoCode"];
+    if (!intp(json["mkm_id"])) error("Expected integer");
     retval.mkm_id = json["mkm_id"];
     retval.mkm_name = json["mkm_name"];
     retval.name = json["name"];
@@ -140,6 +141,7 @@ Card Card_from_JSON(mixed json) {
     Card retval = Card();
 
     retval.artist = json["artist"];
+    if (!intp(json["cmc"])) error("Expected integer");
     retval.cmc = json["cmc"];
     retval.color_identity = json["colorIdentity"];
     retval.colors = json["colors"];
@@ -150,6 +152,7 @@ Card Card_from_JSON(mixed json) {
     retval.legalities = json["legalities"];
     retval.mana_cost = json["manaCost"];
     retval.mci_number = json["mciNumber"];
+    if (!intp(json["multiverseid"])) error("Expected integer");
     retval.multiverseid = json["multiverseid"];
     retval.name = json["name"];
     retval.original_text = json["originalText"];
diff --git a/base/pike/test/inputs/json/misc/dec3a.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/dec3a.json/default/TopLevel.pmod
index 0ce1051..3e9858d 100644
--- a/base/pike/test/inputs/json/misc/dec3a.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/dec3a.json/default/TopLevel.pmod
@@ -82,6 +82,7 @@ ResponseInfo ResponseInfo_from_JSON(mixed json) {
     ResponseInfo retval = ResponseInfo();
 
     retval.developer_message = json["developerMessage"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -106,8 +107,11 @@ class Resultset {
 Resultset Resultset_from_JSON(mixed json) {
     Resultset retval = Resultset();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pagesize"])) error("Expected integer");
     retval.pagesize = json["pagesize"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/df957.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/df957.json/default/TopLevel.pmod
index 74298d3..3b7995b 100644
--- a/base/pike/test/inputs/json/misc/df957.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/df957.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod
index d1f1f11..49acf10 100644
--- a/base/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e0ac7.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -424,6 +425,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -448,8 +450,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod
index ff6409e..38898b0 100644
--- a/base/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e2915.json/default/TopLevel.pmod
@@ -54,6 +54,7 @@ class Query {
 Query Query_from_JSON(mixed json) {
     Query retval = Query();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.created = json["created"];
     retval.lang = json["lang"];
diff --git a/base/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod
index 82f0978..76b27c3 100644
--- a/base/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e53b5.json/default/TopLevel.pmod
@@ -120,9 +120,12 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["page"])) error("Expected integer");
     retval.page = json["page"];
+    if (!intp(json["pages"])) error("Expected integer");
     retval.pages = json["pages"];
     retval.per_page = json["per_page"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/e8a0b.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
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 44bd1d7..46d7fbe 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
@@ -111,11 +111,14 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.description = json["description"];
     retval.display_type = DisplayType_from_JSON(json["displayType"]);
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -133,7 +136,9 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     retval.owner = json["owner"];
@@ -141,6 +146,7 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     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"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = PublicationStage_from_JSON(json["publicationStage"]);
     if (has_index(json, "ratings") && json["ratings"] != Val.null) Ratings_from_JSON(json["ratings"]);
@@ -153,10 +159,14 @@ TopLevelElement TopLevelElement_from_JSON(mixed json) {
     retval.rows_updated_by = RowsUpdatedBy_from_JSON(json["rowsUpdatedBy"]);
     TableAuthor_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
     retval.tags = json["tags"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = ViewType_from_JSON(json["viewType"]);
 
@@ -561,6 +571,7 @@ class TableColumnId {
 TableColumnId TableColumnId_from_JSON(mixed json) {
     TableColumnId retval = TableColumnId();
 
+    if (!intp(json["2819740"])) error("Expected integer");
     retval.the_2819740 = json["2819740"];
 
     return retval;
@@ -730,6 +741,7 @@ class Field {
 Field Field_from_JSON(mixed json) {
     Field retval = Field();
 
+    if (!intp(json["tableColumnId"])) error("Expected integer");
     retval.table_column_id = json["tableColumnId"];
     retval.type = FieldType_from_JSON(json["type"]);
 
@@ -961,6 +973,7 @@ class Ratings {
 Ratings Ratings_from_JSON(mixed json) {
     Ratings retval = Ratings();
 
+    if (!intp(json["rating"])) error("Expected integer");
     retval.rating = json["rating"];
 
     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 77e04eb..2117221 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
@@ -245,9 +245,11 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.created_utc = (float)json["created_utc"];
     retval.distinguished = json["distinguished"];
     retval.domain = json["domain"];
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -270,6 +272,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -281,6 +284,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     MediaEmbed_from_JSON(json["secure_media_embed"]);
@@ -298,6 +302,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
diff --git a/base/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f3edf.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod
index d569a3e..02b5d80 100644
--- a/base/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f466a.json/default/TopLevel.pmod
@@ -43,11 +43,16 @@ class TopLevelElement {
 TopLevelElement TopLevelElement_from_JSON(mixed json) {
     TopLevelElement retval = TopLevelElement();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.country = Country_from_JSON(json["country"]);
+    if (!intp(json["females"])) error("Expected integer");
     retval.females = json["females"];
+    if (!intp(json["males"])) error("Expected integer");
     retval.males = json["males"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod
index 403bda7..31e7d2e 100644
--- a/base/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f6a65.json/default/TopLevel.pmod
@@ -97,6 +97,7 @@ Datum Datum_from_JSON(mixed json) {
     Images_from_JSON(json["images"]);
     retval.images = json["images"];
     retval.import_datetime = json["import_datetime"];
+    if (!intp(json["is_indexable"])) error("Expected integer");
     retval.is_indexable = json["is_indexable"];
     retval.rating = Rating_from_JSON(json["rating"]);
     retval.slug = json["slug"];
@@ -436,6 +437,7 @@ Meta Meta_from_JSON(mixed json) {
 
     retval.msg = json["msg"];
     retval.response_id = json["response_id"];
+    if (!intp(json["status"])) error("Expected integer");
     retval.status = json["status"];
 
     return retval;
@@ -460,8 +462,11 @@ class Pagination {
 Pagination Pagination_from_JSON(mixed json) {
     Pagination retval = Pagination();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     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 2a59a98..83078be 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
@@ -150,11 +150,14 @@ class View {
 View View_from_JSON(mixed json) {
     View retval = View();
 
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -163,6 +166,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     License_from_JSON(json["license"]);
     retval.license = json["license"];
@@ -173,27 +177,36 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
     retval.row_class = json["rowClass"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -242,8 +255,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Query_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = TypeName_from_JSON(json["renderTypeName"]);
     retval.table_column_id = json["tableColumnId"];
@@ -281,7 +296,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
 
     retval.average = json["average"];
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.sum = json["sum"];
@@ -307,6 +324,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
diff --git a/base/pike/test/inputs/json/misc/f974d.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/f974d.json/default/TopLevel.pmod
index e52dbe2..0a66795 100644
--- a/base/pike/test/inputs/json/misc/f974d.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/f974d.json/default/TopLevel.pmod
@@ -35,9 +35,12 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["block_index"])) error("Expected integer");
     retval.block_index = json["block_index"];
     retval.hash = json["hash"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
+    if (!intp(json["time"])) error("Expected integer");
     retval.time = json["time"];
     retval.tx_indexes = json["txIndexes"];
 
diff --git a/base/pike/test/inputs/json/misc/faff5.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/faff5.json/default/TopLevel.pmod
index 9729dff..60920d4 100644
--- a/base/pike/test/inputs/json/misc/faff5.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/faff5.json/default/TopLevel.pmod
@@ -50,7 +50,9 @@ class Response {
 Response Response_from_JSON(mixed json) {
     Response retval = Response();
 
+    if (!intp(json["player_count"])) error("Expected integer");
     retval.player_count = json["player_count"];
+    if (!intp(json["result"])) error("Expected integer");
     retval.result = json["result"];
 
     return retval;
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 43e1db9..fcf4b25 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
@@ -151,12 +151,15 @@ View View_from_JSON(mixed json) {
     View retval = View();
 
     retval.attribution = json["attribution"];
+    if (!intp(json["averageRating"])) error("Expected integer");
     retval.average_rating = json["averageRating"];
     retval.category = json["category"];
     retval.columns = json["columns"];
+    if (!intp(json["createdAt"])) error("Expected integer");
     retval.created_at = json["createdAt"];
     retval.description = json["description"];
     retval.display_type = json["displayType"];
+    if (!intp(json["downloadCount"])) error("Expected integer");
     retval.download_count = json["downloadCount"];
     retval.flags = json["flags"];
     retval.grants = json["grants"];
@@ -165,6 +168,7 @@ View View_from_JSON(mixed json) {
     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"];
+    if (!intp(json["indexUpdatedAt"])) error("Expected integer");
     retval.index_updated_at = json["indexUpdatedAt"];
     retval.locale = json["locale"];
     ViewMetadata_from_JSON(json["metadata"]);
@@ -172,27 +176,36 @@ View View_from_JSON(mixed json) {
     retval.name = json["name"];
     if (json["newBackend"] != Standards.JSON.true && json["newBackend"] != Standards.JSON.false) error("Expected bool");
     retval.new_backend = json["newBackend"];
+    if (!intp(json["numberOfComments"])) error("Expected integer");
     retval.number_of_comments = json["numberOfComments"];
+    if (!intp(json["oid"])) error("Expected integer");
     retval.oid = json["oid"];
     Owner_from_JSON(json["owner"]);
     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"];
+    if (!intp(json["publicationDate"])) error("Expected integer");
     retval.publication_date = json["publicationDate"];
+    if (!intp(json["publicationGroup"])) error("Expected integer");
     retval.publication_group = json["publicationGroup"];
     retval.publication_stage = json["publicationStage"];
     Query_from_JSON(json["query"]);
     retval.query = json["query"];
     retval.rights = json["rights"];
+    if (!intp(json["rowsUpdatedAt"])) error("Expected integer");
     retval.rows_updated_at = json["rowsUpdatedAt"];
     retval.rows_updated_by = json["rowsUpdatedBy"];
     Owner_from_JSON(json["tableAuthor"]);
     retval.table_author = json["tableAuthor"];
+    if (!intp(json["tableId"])) error("Expected integer");
     retval.table_id = json["tableId"];
     retval.tags = json["tags"];
+    if (!intp(json["totalTimesRated"])) error("Expected integer");
     retval.total_times_rated = json["totalTimesRated"];
+    if (!intp(json["viewCount"])) error("Expected integer");
     retval.view_count = json["viewCount"];
+    if (!intp(json["viewLastModified"])) error("Expected integer");
     retval.view_last_modified = json["viewLastModified"];
     retval.view_type = json["viewType"];
 
@@ -244,8 +257,10 @@ Column Column_from_JSON(mixed json) {
     retval.flags = json["flags"];
     Format_from_JSON(json["format"]);
     retval.format = json["format"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
     retval.render_type_name = TypeName_from_JSON(json["renderTypeName"]);
     retval.table_column_id = json["tableColumnId"];
@@ -283,7 +298,9 @@ CachedContents CachedContents_from_JSON(mixed json) {
 
     retval.average = json["average"];
     retval.largest = json["largest"];
+    if (!intp(json["non_null"])) error("Expected integer");
     retval.non_null = json["non_null"];
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
     retval.smallest = json["smallest"];
     retval.sum = json["sum"];
@@ -309,6 +326,7 @@ class Top {
 Top Top_from_JSON(mixed json) {
     Top retval = Top();
 
+    if (!intp(json["count"])) error("Expected integer");
     retval.count = json["count"];
     retval.item = json["item"];
 
@@ -688,6 +706,7 @@ class TableColumnId {
 TableColumnId TableColumnId_from_JSON(mixed json) {
     TableColumnId retval = TableColumnId();
 
+    if (!intp(json["703610"])) error("Expected integer");
     retval.the_703610 = json["703610"];
 
     return retval;
@@ -712,6 +731,7 @@ FilterConditionMetadata FilterConditionMetadata_from_JSON(mixed json) {
 
     if (json["advanced"] != Standards.JSON.true && json["advanced"] != Standards.JSON.false) error("Expected bool");
     retval.advanced = json["advanced"];
+    if (!intp(json["unifiedVersion"])) error("Expected integer");
     retval.unified_version = json["unifiedVersion"];
 
     return retval;
@@ -906,6 +926,7 @@ class Expression {
 Expression Expression_from_JSON(mixed json) {
     Expression retval = Expression();
 
+    if (!intp(json["columnId"])) error("Expected integer");
     retval.column_id = json["columnId"];
     retval.type = json["type"];
 
diff --git a/base/pike/test/inputs/json/misc/fd329.json/default/TopLevel.pmod b/head/pike/test/inputs/json/misc/fd329.json/default/TopLevel.pmod
index 443e385..e62ed35 100644
--- a/base/pike/test/inputs/json/misc/fd329.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/misc/fd329.json/default/TopLevel.pmod
@@ -81,6 +81,7 @@ Description Description_from_JSON(mixed json) {
     Description retval = Description();
 
     retval.base_period = json["base_period"];
+    if (!intp(json["missing"])) error("Expected integer");
     retval.missing = json["missing"];
     retval.title = json["title"];
     retval.units = json["units"];
diff --git a/base/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod
index 5d580c7..a89b1ad 100644
--- a/base/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/bug427.json/default/TopLevel.pmod
@@ -41,7 +41,9 @@ TopLevel TopLevel_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.name = json["name"];
 
@@ -87,7 +89,9 @@ TopLevelChild TopLevelChild_from_JSON(mixed json) {
     PurpleFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = TentacledKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -153,9 +157,11 @@ PurpleChild PurpleChild_from_JSON(mixed json) {
     IndecentFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.implemented_by = json["implementedBy"];
     retval.implemented_types = json["implementedTypes"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = FluffyKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -224,11 +230,13 @@ FluffyChild FluffyChild_from_JSON(mixed json) {
     if (has_index(json, "getSignature") && json["getSignature"] != Val.null) GetSignature_from_JSON(json["getSignature"]);
     retval.get_signature = json["getSignature"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (has_index(json, "implementationOf") && json["implementationOf"] != Val.null) ExtendedBy_from_JSON(json["implementationOf"]);
     retval.implementation_of = json["implementationOf"];
     if (has_index(json, "inheritedFrom") && json["inheritedFrom"] != Val.null) ExtendedBy_from_JSON(json["inheritedFrom"]);
     retval.inherited_from = json["inheritedFrom"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = PurpleKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -282,7 +290,9 @@ TentacledChild TentacledChild_from_JSON(mixed json) {
     retval.default_value = json["defaultValue"];
     PurpleFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = PurpleKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -383,7 +393,9 @@ PurpleSignature PurpleSignature_from_JSON(mixed json) {
     retval.comment = json["comment"];
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = SignatureKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -479,7 +491,9 @@ IndexSignatureElement IndexSignatureElement_from_JSON(mixed json) {
 
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -550,7 +564,9 @@ GetSignatureChild GetSignatureChild_from_JSON(mixed json) {
     retval.comment = json["comment"];
     FluffyFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = PurpleKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -609,7 +625,9 @@ GetSignature GetSignature_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -736,8 +754,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["character"])) error("Expected integer");
     retval.character = json["character"];
     retval.file_name = FileName_from_JSON(json["fileName"]);
+    if (!intp(json["line"])) error("Expected integer");
     retval.line = json["line"];
 
     return retval;
@@ -809,6 +829,7 @@ Group Group_from_JSON(mixed json) {
     Group retval = Group();
 
     retval.children = json["children"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.title = json["title"];
 
@@ -846,7 +867,9 @@ GetSignatureParameter GetSignatureParameter_from_JSON(mixed json) {
     retval.comment = json["comment"];
     TentacledFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = ParameterKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -998,7 +1021,9 @@ PurpleDeclaration PurpleDeclaration_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -1204,11 +1229,13 @@ FluffySignature FluffySignature_from_JSON(mixed json) {
     retval.comment = json["comment"];
     IndigoFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (has_index(json, "implementationOf") && json["implementationOf"] != Val.null) ExtendedBy_from_JSON(json["implementationOf"]);
     retval.implementation_of = json["implementationOf"];
     if (has_index(json, "inheritedFrom") && json["inheritedFrom"] != Val.null) ExtendedBy_from_JSON(json["inheritedFrom"]);
     retval.inherited_from = json["inheritedFrom"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = SignatureKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -1276,7 +1303,9 @@ PurpleParameter PurpleParameter_from_JSON(mixed json) {
     retval.comment = json["comment"];
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = ParameterKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -1414,9 +1443,11 @@ FluffyDeclaration FluffyDeclaration_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (has_index(json, "indexSignature") && json["indexSignature"] != Val.null) IndexSignature_from_JSON(json["indexSignature"]);
     retval.index_signature = json["indexSignature"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -1459,7 +1490,9 @@ StickyChild StickyChild_from_JSON(mixed json) {
     retval.comment = json["comment"];
     FluffyFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = PurpleKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -1529,7 +1562,9 @@ IndexSignature IndexSignature_from_JSON(mixed json) {
 
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -1597,7 +1632,9 @@ TentacledSignature TentacledSignature_from_JSON(mixed json) {
     retval.comment = json["comment"];
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = SignatureKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -1664,7 +1701,9 @@ FluffyParameter FluffyParameter_from_JSON(mixed json) {
     retval.comment = json["comment"];
     FluffyFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -1790,7 +1829,9 @@ StickySignature StickySignature_from_JSON(mixed json) {
     retval.comment = json["comment"];
     IndigoFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = SignatureKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -1838,7 +1879,9 @@ TentacledParameter TentacledParameter_from_JSON(mixed json) {
     retval.default_value = json["defaultValue"];
     TentacledFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = ParameterKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -1923,9 +1966,11 @@ TentacledDeclaration TentacledDeclaration_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (has_index(json, "indexSignature") && json["indexSignature"] != Val.null) IndexSignatureElement_from_JSON(json["indexSignature"]);
     retval.index_signature = json["indexSignature"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -1971,7 +2016,9 @@ IndigoChild IndigoChild_from_JSON(mixed json) {
     retval.default_value = json["defaultValue"];
     FluffyFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = PurpleKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -2096,7 +2143,9 @@ StickyDeclaration StickyDeclaration_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -2135,7 +2184,9 @@ IndecentChild IndecentChild_from_JSON(mixed json) {
 
     FluffyFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = PurpleKindString_from_JSON(json["kindString"]);
     retval.name = json["name"];
@@ -2208,7 +2259,9 @@ IndigoDeclaration IndigoDeclaration_from_JSON(mixed json) {
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
     retval.groups = json["groups"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
@@ -2272,7 +2325,9 @@ TypeParameter TypeParameter_from_JSON(mixed json) {
     retval.comment = json["comment"];
     GetSignatureFlags_from_JSON(json["flags"]);
     retval.flags = json["flags"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
+    if (!intp(json["kind"])) error("Expected integer");
     retval.kind = json["kind"];
     retval.kind_string = json["kindString"];
     retval.name = json["name"];
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 14accc3..46464d3 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
@@ -42,13 +42,18 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.children_data = json["children_data"];
+    if (!intp(json["id"])) error("Expected integer");
     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"];
+    if (!intp(json["level"])) error("Expected integer");
     retval.level = json["level"];
     retval.name = json["name"];
+    if (!intp(json["parent_id"])) error("Expected integer");
     retval.parent_id = json["parent_id"];
+    if (!intp(json["position"])) error("Expected integer");
     retval.position = json["position"];
+    if (!intp(json["product_count"])) error("Expected integer");
     retval.product_count = json["product_count"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/bug855-short.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/bug855-short.json/default/TopLevel.pmod
index 7390d14..6195de1 100644
--- a/base/pike/test/inputs/json/priority/bug855-short.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/bug855-short.json/default/TopLevel.pmod
@@ -48,7 +48,9 @@ TopLevelValue TopLevelValue_from_JSON(mixed json) {
     retval.channel_id = json["channel_id"];
     retval.channel_name = json["channel_name"];
     retval.code = json["code"];
+    if (!intp(json["emoticon_set"])) error("Expected integer");
     retval.emoticon_set = json["emoticon_set"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod
index 72a46ac..59366c3 100644
--- a/base/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/bug863.json/default/TopLevel.pmod
@@ -71,20 +71,27 @@ class PurpleTopLevel {
 PurpleTopLevel PurpleTopLevel_from_JSON(mixed json) {
     PurpleTopLevel retval = PurpleTopLevel();
 
+    if (!intp(json["ALIENLEVEL"])) error("Expected integer");
     retval.alienlevel = json["ALIENLEVEL"];
     retval.breed = Breed_from_JSON(json["BREED"]);
+    if (!intp(json["CHAR_DIMENSION"])) error("Expected integer");
     retval.char_dimension = json["CHAR_DIMENSION"];
+    if (!intp(json["CHAR_INSTANCE"])) error("Expected integer");
     retval.char_instance = json["CHAR_INSTANCE"];
     retval.defender_rank_title = json["DEFENDER_RANK_TITLE"];
     retval.firstname = Firstname_from_JSON(json["FIRSTNAME"]);
+    if (!intp(json["HEADID"])) error("Expected integer");
     retval.headid = json["HEADID"];
     retval.lastname = Lastname_from_JSON(json["LASTNAME"]);
+    if (!intp(json["LEVELX"])) error("Expected integer");
     retval.levelx = json["LEVELX"];
     retval.name = json["NAME"];
     retval.prof = json["PROF"];
     retval.prof_title = json["PROF_TITLE"];
+    if (!intp(json["PVPRATING"])) error("Expected integer");
     retval.pvprating = json["PVPRATING"];
     retval.pvptitle = Pvptitle_from_JSON(json["PVPTITLE"]);
+    if (!intp(json["RANK"])) error("Expected integer");
     retval.rank = json["RANK"];
     retval.rank_title = RankTitle_from_JSON(json["RANK_TITLE"]);
     retval.sex = Sex_from_JSON(json["SEX"]);
@@ -233,40 +240,68 @@ class FluffyTopLevel {
 FluffyTopLevel FluffyTopLevel_from_JSON(mixed json) {
     FluffyTopLevel retval = FluffyTopLevel();
 
+    if (!intp(json["ADVENTURERCOUNT"])) error("Expected integer");
     retval.adventurercount = json["ADVENTURERCOUNT"];
+    if (!intp(json["AGENTCOUNT"])) error("Expected integer");
     retval.agentcount = json["AGENTCOUNT"];
+    if (!intp(json["ATROXCOUNT"])) error("Expected integer");
     retval.atroxcount = json["ATROXCOUNT"];
     retval.avglvl = (float)json["AVGLVL"];
+    if (!intp(json["BTCOUNT"])) error("Expected integer");
     retval.btcount = json["BTCOUNT"];
     retval.description = json["DESCRIPTION"];
+    if (!intp(json["DOCTORCOUNT"])) error("Expected integer");
     retval.doctorcount = json["DOCTORCOUNT"];
+    if (!intp(json["ENFCOUNT"])) error("Expected integer");
     retval.enfcount = json["ENFCOUNT"];
+    if (!intp(json["ENGINEEERCOUNT"])) error("Expected integer");
     retval.engineeercount = json["ENGINEEERCOUNT"];
+    if (!intp(json["FEMALECOUNT"])) error("Expected integer");
     retval.femalecount = json["FEMALECOUNT"];
+    if (!intp(json["FIXERCOUNT"])) error("Expected integer");
     retval.fixercount = json["FIXERCOUNT"];
     retval.governingname = json["GOVERNINGNAME"];
     retval.history = json["HISTORY"];
+    if (!intp(json["KEEPERCOUNT"])) error("Expected integer");
     retval.keepercount = json["KEEPERCOUNT"];
+    if (!intp(json["MACOUNT"])) error("Expected integer");
     retval.macount = json["MACOUNT"];
+    if (!intp(json["MALECOUNT"])) error("Expected integer");
     retval.malecount = json["MALECOUNT"];
+    if (!intp(json["MAXLVL"])) error("Expected integer");
     retval.maxlvl = json["MAXLVL"];
+    if (!intp(json["METACOUNT"])) error("Expected integer");
     retval.metacount = json["METACOUNT"];
+    if (!intp(json["MINLVL"])) error("Expected integer");
     retval.minlvl = json["MINLVL"];
+    if (!intp(json["MONSTERCOUNT"])) error("Expected integer");
     retval.monstercount = json["MONSTERCOUNT"];
     retval.name = json["NAME"];
+    if (!intp(json["NANOCOUNT"])) error("Expected integer");
     retval.nanocount = json["NANOCOUNT"];
+    if (!intp(json["NANORACECOUNT"])) error("Expected integer");
     retval.nanoracecount = json["NANORACECOUNT"];
+    if (!intp(json["NEUTERCOUNT"])) error("Expected integer");
     retval.neutercount = json["NEUTERCOUNT"];
+    if (!intp(json["NUMMEMBERS"])) error("Expected integer");
     retval.nummembers = json["NUMMEMBERS"];
     retval.objective = json["OBJECTIVE"];
+    if (!intp(json["OPIFEXCOUNT"])) error("Expected integer");
     retval.opifexcount = json["OPIFEXCOUNT"];
+    if (!intp(json["ORG_DIMENSION"])) error("Expected integer");
     retval.org_dimension = json["ORG_DIMENSION"];
+    if (!intp(json["ORG_INSTANCE"])) error("Expected integer");
     retval.org_instance = json["ORG_INSTANCE"];
+    if (!intp(json["SHADECOUNT"])) error("Expected integer");
     retval.shadecount = json["SHADECOUNT"];
+    if (!intp(json["SIDE"])) error("Expected integer");
     retval.side = json["SIDE"];
     retval.side_name = json["SIDE_NAME"];
+    if (!intp(json["SOLIDERCOUNT"])) error("Expected integer");
     retval.solidercount = json["SOLIDERCOUNT"];
+    if (!intp(json["SOLITUSCOUNT"])) error("Expected integer");
     retval.solituscount = json["SOLITUSCOUNT"];
+    if (!intp(json["TRADERCOUNT"])) error("Expected integer");
     retval.tradercount = json["TRADERCOUNT"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/coin-pairs.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/coin-pairs.json/default/TopLevel.pmod
index 6342c73..161ea29 100644
--- a/base/pike/test/inputs/json/priority/coin-pairs.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/coin-pairs.json/default/TopLevel.pmod
@@ -30,6 +30,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
     retval.pairs = json["pairs"];
+    if (!intp(json["server_time"])) error("Expected integer");
     retval.server_time = json["server_time"];
 
     return retval;
@@ -64,10 +65,14 @@ class Pair {
 Pair Pair_from_JSON(mixed json) {
     Pair retval = Pair();
 
+    if (!intp(json["decimal_places"])) error("Expected integer");
     retval.decimal_places = json["decimal_places"];
     retval.fee = (float)json["fee"];
+    if (!intp(json["hidden"])) error("Expected integer");
     retval.hidden = json["hidden"];
+    if (!intp(json["max_amount"])) error("Expected integer");
     retval.max_amount = json["max_amount"];
+    if (!intp(json["max_price"])) error("Expected integer");
     retval.max_price = json["max_price"];
     retval.min_amount = (float)json["min_amount"];
     retval.min_price = (float)json["min_price"];
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 42e790b..d9a8fb1 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
@@ -115,6 +115,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.cerograph = json["cerograph"];
     retval.chemotherapeutics = json["chemotherapeutics"];
     retval.cimelia = json["cimelia"];
+    if (!intp(json["citrated"])) error("Expected integer");
     retval.citrated = json["citrated"];
     retval.clinodome = json["clinodome"];
     retval.coadjust = json["coadjust"];
@@ -371,6 +372,7 @@ CimeliaClass CimeliaClass_from_JSON(mixed json) {
     CimeliaClass retval = CimeliaClass();
 
     retval.catharticalness = (float)json["catharticalness"];
+    if (!intp(json["Chirotherium"])) error("Expected integer");
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
     if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
@@ -1304,6 +1306,7 @@ Interacinar Interacinar_from_JSON(mixed json) {
     if (json["benefactorship"] != Standards.JSON.true && json["benefactorship"] != Standards.JSON.false) error("Expected bool");
     retval.benefactorship = json["benefactorship"];
     retval.triseriatim = json["triseriatim"];
+    if (!intp(json["tubbing"])) error("Expected integer");
     retval.tubbing = json["tubbing"];
     retval.untrimmed = json["untrimmed"];
 
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 ab439b5..80b93d1 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
@@ -309,6 +309,7 @@ Rebecca Rebecca_from_JSON(mixed json) {
     Rebecca retval = Rebecca();
 
     retval.catharticalness = (float)json["catharticalness"];
+    if (!intp(json["Chirotherium"])) error("Expected integer");
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
     if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
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 efcf5fb..1fd9e1e 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
@@ -696,6 +696,7 @@ MonaziteClass MonaziteClass_from_JSON(mixed json) {
     MonaziteClass retval = MonaziteClass();
 
     retval.catharticalness = (float)json["catharticalness"];
+    if (!intp(json["Chirotherium"])) error("Expected integer");
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
     if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
@@ -864,6 +865,7 @@ Noncontributing Noncontributing_from_JSON(mixed json) {
 
     retval.estevin = json["estevin"];
     retval.jolterhead = (float)json["jolterhead"];
+    if (!intp(json["sauternes"])) error("Expected integer");
     retval.sauternes = json["sauternes"];
     if (json["sparsely"] != Standards.JSON.true && json["sparsely"] != Standards.JSON.false) error("Expected bool");
     retval.sparsely = json["sparsely"];
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 1b2010f..eeed1f6 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
@@ -388,6 +388,7 @@ QuebrachineClass QuebrachineClass_from_JSON(mixed json) {
     QuebrachineClass retval = QuebrachineClass();
 
     retval.catharticalness = (float)json["catharticalness"];
+    if (!intp(json["Chirotherium"])) error("Expected integer");
     retval.chirotherium = json["Chirotherium"];
     retval.disdiapason = json["disdiapason"];
     if (json["homocerc"] != Standards.JSON.true && json["homocerc"] != Standards.JSON.false) error("Expected bool");
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 48a8ea2..6235bc6 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
@@ -39,6 +39,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.also = json["also"];
     if (json["bar"] != Standards.JSON.true && json["bar"] != Standards.JSON.false) error("Expected bool");
     retval.bar = json["bar"];
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
     retval.moo = (float)json["moo"];
     retval.quux = json["quux"];
diff --git a/base/pike/test/inputs/json/priority/identifiers.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/identifiers.json/default/TopLevel.pmod
index e140463..e1f125d 100644
--- a/base/pike/test/inputs/json/priority/identifiers.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/identifiers.json/default/TopLevel.pmod
@@ -45,6 +45,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.foo = json["foo"];
     ThisIsAToughOne_from_JSON(json["ThisIsA\U0001f61cTough\"\n\nOne"]);
     retval.this_is_a_tough_one = json["ThisIsA\U0001f61cTough\"\n\nOne"];
+    if (!intp(json["!"])) error("Expected integer");
     retval.top_level = json["!"];
     EmptyClass_from_JSON(json["Empty"]);
     retval.top_level_empty = json["Empty"];
@@ -67,6 +68,7 @@ class TopLevelBla {
 TopLevelBla TopLevelBla_from_JSON(mixed json) {
     TopLevelBla retval = TopLevelBla();
 
+    if (!intp(json["bar"])) error("Expected integer");
     retval.bar = json["bar"];
 
     return retval;
@@ -87,6 +89,7 @@ class Empty {
 Empty Empty_from_JSON(mixed json) {
     Empty retval = Empty();
 
+    if (!intp(json["x"])) error("Expected integer");
     retval.x = json["x"];
 
     return retval;
@@ -113,7 +116,9 @@ Foo Foo_from_JSON(mixed json) {
 
     FooBla_from_JSON(json["bla"]);
     retval.bla = json["bla"];
+    if (!intp(json["_"])) error("Expected integer");
     retval.empty = json["_"];
+    if (!intp(json["__"])) error("Expected integer");
     retval.foo = json["__"];
 
     return retval;
@@ -152,7 +157,9 @@ class ThisIsAToughOne {
 ThisIsAToughOne ThisIsAToughOne_from_JSON(mixed json) {
     ThisIsAToughOne retval = ThisIsAToughOne();
 
+    if (!intp(json["\n\n\n"])) error("Expected integer");
     retval.empty = json["\n\n\n"];
+    if (!intp(json["\""])) error("Expected integer");
     retval.this_is_a_tough_one = json["\""];
 
     return retval;
@@ -173,6 +180,7 @@ class EmptyClass {
 EmptyClass EmptyClass_from_JSON(mixed json) {
     EmptyClass retval = EmptyClass();
 
+    if (!intp(json["y"])) error("Expected integer");
     retval.y = json["y"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod
index cca6a20..b0d6e89 100644
--- a/base/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod
@@ -37,6 +37,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     Obj1_from_JSON(json["obj1"]);
     retval.obj1 = json["obj1"];
@@ -299,6 +300,7 @@ Obj1 Obj1_from_JSON(mixed json) {
     retval.decltype = json["decltype"];
     DecodeString_from_JSON(json["decode_string"]);
     retval.decode_string = json["decode_string"];
+    if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     Empty_from_JSON(json["_"]);
     retval.empty = json["_"];
@@ -347,6 +349,7 @@ class Abstract {
 Abstract Abstract_from_JSON(mixed json) {
     Abstract retval = Abstract();
 
+    if (!intp(json["abstract"])) error("Expected integer");
     retval.abstract = json["abstract"];
 
     return retval;
@@ -367,6 +370,7 @@ class Alignas {
 Alignas Alignas_from_JSON(mixed json) {
     Alignas retval = Alignas();
 
+    if (!intp(json["alignas"])) error("Expected integer");
     retval.alignas = json["alignas"];
 
     return retval;
@@ -387,6 +391,7 @@ class Alignof {
 Alignof Alignof_from_JSON(mixed json) {
     Alignof retval = Alignof();
 
+    if (!intp(json["alignof"])) error("Expected integer");
     retval.alignof = json["alignof"];
 
     return retval;
@@ -407,6 +412,7 @@ class And {
 And And_from_JSON(mixed json) {
     And retval = And();
 
+    if (!intp(json["and"])) error("Expected integer");
     retval.and = json["and"];
 
     return retval;
@@ -427,6 +433,7 @@ class AndEq {
 AndEq AndEq_from_JSON(mixed json) {
     AndEq retval = AndEq();
 
+    if (!intp(json["and_eq"])) error("Expected integer");
     retval.and_eq = json["and_eq"];
 
     return retval;
@@ -447,6 +454,7 @@ class Any {
 Any Any_from_JSON(mixed json) {
     Any retval = Any();
 
+    if (!intp(json["Any"])) error("Expected integer");
     retval.any = json["Any"];
 
     return retval;
@@ -467,6 +475,7 @@ class As {
 As As_from_JSON(mixed json) {
     As retval = As();
 
+    if (!intp(json["as"])) error("Expected integer");
     retval.as = json["as"];
 
     return retval;
@@ -487,6 +496,7 @@ class Asm {
 Asm Asm_from_JSON(mixed json) {
     Asm retval = Asm();
 
+    if (!intp(json["asm"])) error("Expected integer");
     retval.asm = json["asm"];
 
     return retval;
@@ -507,6 +517,7 @@ class Assert {
 Assert Assert_from_JSON(mixed json) {
     Assert retval = Assert();
 
+    if (!intp(json["assert"])) error("Expected integer");
     retval.assert = json["assert"];
 
     return retval;
@@ -527,6 +538,7 @@ class Associatedtype {
 Associatedtype Associatedtype_from_JSON(mixed json) {
     Associatedtype retval = Associatedtype();
 
+    if (!intp(json["associatedtype"])) error("Expected integer");
     retval.associatedtype = json["associatedtype"];
 
     return retval;
@@ -547,6 +559,7 @@ class Associativity {
 Associativity Associativity_from_JSON(mixed json) {
     Associativity retval = Associativity();
 
+    if (!intp(json["associativity"])) error("Expected integer");
     retval.associativity = json["associativity"];
 
     return retval;
@@ -567,6 +580,7 @@ class Async {
 Async Async_from_JSON(mixed json) {
     Async retval = Async();
 
+    if (!intp(json["async"])) error("Expected integer");
     retval.async = json["async"];
 
     return retval;
@@ -587,6 +601,7 @@ class Atomic {
 Atomic Atomic_from_JSON(mixed json) {
     Atomic retval = Atomic();
 
+    if (!intp(json["atomic"])) error("Expected integer");
     retval.atomic = json["atomic"];
 
     return retval;
@@ -607,6 +622,7 @@ class AtomicCancel {
 AtomicCancel AtomicCancel_from_JSON(mixed json) {
     AtomicCancel retval = AtomicCancel();
 
+    if (!intp(json["atomic_cancel"])) error("Expected integer");
     retval.atomic_cancel = json["atomic_cancel"];
 
     return retval;
@@ -627,6 +643,7 @@ class AtomicCommit {
 AtomicCommit AtomicCommit_from_JSON(mixed json) {
     AtomicCommit retval = AtomicCommit();
 
+    if (!intp(json["atomic_commit"])) error("Expected integer");
     retval.atomic_commit = json["atomic_commit"];
 
     return retval;
@@ -647,6 +664,7 @@ class AtomicNoexcept {
 AtomicNoexcept AtomicNoexcept_from_JSON(mixed json) {
     AtomicNoexcept retval = AtomicNoexcept();
 
+    if (!intp(json["atomic_noexcept"])) error("Expected integer");
     retval.atomic_noexcept = json["atomic_noexcept"];
 
     return retval;
@@ -667,6 +685,7 @@ class Await {
 Await Await_from_JSON(mixed json) {
     Await retval = Await();
 
+    if (!intp(json["await"])) error("Expected integer");
     retval.await = json["await"];
 
     return retval;
@@ -687,6 +706,7 @@ class Base {
 Base Base_from_JSON(mixed json) {
     Base retval = Base();
 
+    if (!intp(json["base"])) error("Expected integer");
     retval.base = json["base"];
 
     return retval;
@@ -707,6 +727,7 @@ class Bitand {
 Bitand Bitand_from_JSON(mixed json) {
     Bitand retval = Bitand();
 
+    if (!intp(json["bitand"])) error("Expected integer");
     retval.bitand = json["bitand"];
 
     return retval;
@@ -727,6 +748,7 @@ class Bitor {
 Bitor Bitor_from_JSON(mixed json) {
     Bitor retval = Bitor();
 
+    if (!intp(json["bitor"])) error("Expected integer");
     retval.bitor = json["bitor"];
 
     return retval;
@@ -747,6 +769,7 @@ class Bool {
 Bool Bool_from_JSON(mixed json) {
     Bool retval = Bool();
 
+    if (!intp(json["BOOL"])) error("Expected integer");
     retval.bool = json["BOOL"];
 
     return retval;
@@ -767,6 +790,7 @@ class Boolean {
 Boolean Boolean_from_JSON(mixed json) {
     Boolean retval = Boolean();
 
+    if (!intp(json["boolean"])) error("Expected integer");
     retval.boolean = json["boolean"];
 
     return retval;
@@ -787,6 +811,7 @@ class Bycopy {
 Bycopy Bycopy_from_JSON(mixed json) {
     Bycopy retval = Bycopy();
 
+    if (!intp(json["bycopy"])) error("Expected integer");
     retval.bycopy = json["bycopy"];
 
     return retval;
@@ -807,6 +832,7 @@ class Byref {
 Byref Byref_from_JSON(mixed json) {
     Byref retval = Byref();
 
+    if (!intp(json["byref"])) error("Expected integer");
     retval.byref = json["byref"];
 
     return retval;
@@ -827,6 +853,7 @@ class Byte {
 Byte Byte_from_JSON(mixed json) {
     Byte retval = Byte();
 
+    if (!intp(json["byte"])) error("Expected integer");
     retval.byte = json["byte"];
 
     return retval;
@@ -847,6 +874,7 @@ class Chan {
 Chan Chan_from_JSON(mixed json) {
     Chan retval = Chan();
 
+    if (!intp(json["chan"])) error("Expected integer");
     retval.chan = json["chan"];
 
     return retval;
@@ -867,6 +895,7 @@ class Char {
 Char Char_from_JSON(mixed json) {
     Char retval = Char();
 
+    if (!intp(json["char"])) error("Expected integer");
     retval.char = json["char"];
 
     return retval;
@@ -887,6 +916,7 @@ class Char16T {
 Char16T Char16T_from_JSON(mixed json) {
     Char16T retval = Char16T();
 
+    if (!intp(json["char16_t"])) error("Expected integer");
     retval.char16_t = json["char16_t"];
 
     return retval;
@@ -907,6 +937,7 @@ class Char32T {
 Char32T Char32T_from_JSON(mixed json) {
     Char32T retval = Char32T();
 
+    if (!intp(json["char32_t"])) error("Expected integer");
     retval.char32_t = json["char32_t"];
 
     return retval;
@@ -927,6 +958,7 @@ class Checked {
 Checked Checked_from_JSON(mixed json) {
     Checked retval = Checked();
 
+    if (!intp(json["checked"])) error("Expected integer");
     retval.checked = json["checked"];
 
     return retval;
@@ -947,6 +979,7 @@ class Clone {
 Clone Clone_from_JSON(mixed json) {
     Clone retval = Clone();
 
+    if (!intp(json["clone"])) error("Expected integer");
     retval.clone = json["clone"];
 
     return retval;
@@ -967,6 +1000,7 @@ class CoAwait {
 CoAwait CoAwait_from_JSON(mixed json) {
     CoAwait retval = CoAwait();
 
+    if (!intp(json["co_await"])) error("Expected integer");
     retval.co_await = json["co_await"];
 
     return retval;
@@ -987,6 +1021,7 @@ class CoReturn {
 CoReturn CoReturn_from_JSON(mixed json) {
     CoReturn retval = CoReturn();
 
+    if (!intp(json["co_return"])) error("Expected integer");
     retval.co_return = json["co_return"];
 
     return retval;
@@ -1007,6 +1042,7 @@ class CoYield {
 CoYield CoYield_from_JSON(mixed json) {
     CoYield retval = CoYield();
 
+    if (!intp(json["co_yield"])) error("Expected integer");
     retval.co_yield = json["co_yield"];
 
     return retval;
@@ -1027,6 +1063,7 @@ class Compl {
 Compl Compl_from_JSON(mixed json) {
     Compl retval = Compl();
 
+    if (!intp(json["compl"])) error("Expected integer");
     retval.compl = json["compl"];
 
     return retval;
@@ -1047,6 +1084,7 @@ class Complex {
 Complex Complex_from_JSON(mixed json) {
     Complex retval = Complex();
 
+    if (!intp(json["_Complex"])) error("Expected integer");
     retval.complex = json["_Complex"];
 
     return retval;
@@ -1067,6 +1105,7 @@ class Concept {
 Concept Concept_from_JSON(mixed json) {
     Concept retval = Concept();
 
+    if (!intp(json["concept"])) error("Expected integer");
     retval.concept = json["concept"];
 
     return retval;
@@ -1087,6 +1126,7 @@ class Console {
 Console Console_from_JSON(mixed json) {
     Console retval = Console();
 
+    if (!intp(json["console"])) error("Expected integer");
     retval.console = json["console"];
 
     return retval;
@@ -1107,6 +1147,7 @@ class ConstCast {
 ConstCast ConstCast_from_JSON(mixed json) {
     ConstCast retval = ConstCast();
 
+    if (!intp(json["const_cast"])) error("Expected integer");
     retval.const_cast = json["const_cast"];
 
     return retval;
@@ -1127,6 +1168,7 @@ class Constexpr {
 Constexpr Constexpr_from_JSON(mixed json) {
     Constexpr retval = Constexpr();
 
+    if (!intp(json["constexpr"])) error("Expected integer");
     retval.constexpr = json["constexpr"];
 
     return retval;
@@ -1147,6 +1189,7 @@ class Constructor {
 Constructor Constructor_from_JSON(mixed json) {
     Constructor retval = Constructor();
 
+    if (!intp(json["constructor"])) error("Expected integer");
     retval.constructor = json["constructor"];
 
     return retval;
@@ -1167,6 +1210,7 @@ class Convenience {
 Convenience Convenience_from_JSON(mixed json) {
     Convenience retval = Convenience();
 
+    if (!intp(json["convenience"])) error("Expected integer");
     retval.convenience = json["convenience"];
 
     return retval;
@@ -1187,6 +1231,7 @@ class Convert {
 Convert Convert_from_JSON(mixed json) {
     Convert retval = Convert();
 
+    if (!intp(json["convert"])) error("Expected integer");
     retval.convert = json["convert"];
 
     return retval;
@@ -1207,6 +1252,7 @@ class Converter {
 Converter Converter_from_JSON(mixed json) {
     Converter retval = Converter();
 
+    if (!intp(json["converter"])) error("Expected integer");
     retval.converter = json["converter"];
 
     return retval;
@@ -1227,6 +1273,7 @@ class Date {
 Date Date_from_JSON(mixed json) {
     Date retval = Date();
 
+    if (!intp(json["date"])) error("Expected integer");
     retval.date = json["date"];
 
     return retval;
@@ -1247,6 +1294,7 @@ class DateParseHandling {
 DateParseHandling DateParseHandling_from_JSON(mixed json) {
     DateParseHandling retval = DateParseHandling();
 
+    if (!intp(json["date_parse_handling"])) error("Expected integer");
     retval.date_parse_handling = json["date_parse_handling"];
 
     return retval;
@@ -1267,6 +1315,7 @@ class Debugger {
 Debugger Debugger_from_JSON(mixed json) {
     Debugger retval = Debugger();
 
+    if (!intp(json["debugger"])) error("Expected integer");
     retval.debugger = json["debugger"];
 
     return retval;
@@ -1287,6 +1336,7 @@ class Decimal {
 Decimal Decimal_from_JSON(mixed json) {
     Decimal retval = Decimal();
 
+    if (!intp(json["decimal"])) error("Expected integer");
     retval.decimal = json["decimal"];
 
     return retval;
@@ -1307,6 +1357,7 @@ class Declare {
 Declare Declare_from_JSON(mixed json) {
     Declare retval = Declare();
 
+    if (!intp(json["declare"])) error("Expected integer");
     retval.declare = json["declare"];
 
     return retval;
@@ -1327,6 +1378,7 @@ class Decltype {
 Decltype Decltype_from_JSON(mixed json) {
     Decltype retval = Decltype();
 
+    if (!intp(json["decltype"])) error("Expected integer");
     retval.decltype = json["decltype"];
 
     return retval;
@@ -1347,6 +1399,7 @@ class DecodeString {
 DecodeString DecodeString_from_JSON(mixed json) {
     DecodeString retval = DecodeString();
 
+    if (!intp(json["decode_string"])) error("Expected integer");
     retval.decode_string = json["decode_string"];
 
     return retval;
@@ -1367,6 +1420,7 @@ class Empty {
 Empty Empty_from_JSON(mixed json) {
     Empty retval = Empty();
 
+    if (!intp(json["_"])) error("Expected integer");
     retval.empty = json["_"];
 
     return retval;
@@ -1387,6 +1441,7 @@ class Imaginery {
 Imaginery Imaginery_from_JSON(mixed json) {
     Imaginery retval = Imaginery();
 
+    if (!intp(json["_Imaginery"])) error("Expected integer");
     retval.imaginery = json["_Imaginery"];
 
     return retval;
@@ -1407,6 +1462,7 @@ class AnyClass {
 AnyClass AnyClass_from_JSON(mixed json) {
     AnyClass retval = AnyClass();
 
+    if (!intp(json["any"])) error("Expected integer");
     retval.any = json["any"];
 
     return retval;
@@ -1427,6 +1483,7 @@ class Array {
 Array Array_from_JSON(mixed json) {
     Array retval = Array();
 
+    if (!intp(json["array"])) error("Expected integer");
     retval.array_array = json["array"];
 
     return retval;
@@ -1447,6 +1504,7 @@ class Auto {
 Auto Auto_from_JSON(mixed json) {
     Auto retval = Auto();
 
+    if (!intp(json["auto"])) error("Expected integer");
     retval.auto_auto = json["auto"];
 
     return retval;
@@ -1467,6 +1525,7 @@ class BoolClass {
 BoolClass BoolClass_from_JSON(mixed json) {
     BoolClass retval = BoolClass();
 
+    if (!intp(json["_Bool"])) error("Expected integer");
     retval.bool = json["_Bool"];
 
     return retval;
@@ -1487,6 +1546,7 @@ class Break {
 Break Break_from_JSON(mixed json) {
     Break retval = Break();
 
+    if (!intp(json["break"])) error("Expected integer");
     retval.break_break = json["break"];
 
     return retval;
@@ -1507,6 +1567,7 @@ class Case {
 Case Case_from_JSON(mixed json) {
     Case retval = Case();
 
+    if (!intp(json["case"])) error("Expected integer");
     retval.case_case = json["case"];
 
     return retval;
@@ -1527,6 +1588,7 @@ class Catch {
 Catch Catch_from_JSON(mixed json) {
     Catch retval = Catch();
 
+    if (!intp(json["catch"])) error("Expected integer");
     retval.catch_catch = json["catch"];
 
     return retval;
@@ -1547,6 +1609,7 @@ class Class {
 Class Class_from_JSON(mixed json) {
     Class retval = Class();
 
+    if (!intp(json["Class"])) error("Expected integer");
     retval.class_class = json["Class"];
 
     return retval;
@@ -1567,6 +1630,7 @@ class Const {
 Const Const_from_JSON(mixed json) {
     Const retval = Const();
 
+    if (!intp(json["const"])) error("Expected integer");
     retval.const_const = json["const"];
 
     return retval;
@@ -1587,6 +1651,7 @@ class Continue {
 Continue Continue_from_JSON(mixed json) {
     Continue retval = Continue();
 
+    if (!intp(json["continue"])) error("Expected integer");
     retval.continue_continue = json["continue"];
 
     return retval;
@@ -1607,6 +1672,7 @@ class Obj1Bool {
 Obj1Bool Obj1Bool_from_JSON(mixed json) {
     Obj1Bool retval = Obj1Bool();
 
+    if (!intp(json["bool"])) error("Expected integer");
     retval.bool = json["bool"];
 
     return retval;
@@ -1627,6 +1693,7 @@ class ClassClass {
 ClassClass ClassClass_from_JSON(mixed json) {
     ClassClass retval = ClassClass();
 
+    if (!intp(json["class"])) error("Expected integer");
     retval.class_class = json["class"];
 
     return retval;
@@ -1797,6 +1864,7 @@ Obj2 Obj2_from_JSON(mixed json) {
     retval.did_set = json["didSet"];
     Double_from_JSON(json["double"]);
     retval.double = json["double"];
+    if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     Dynamic_from_JSON(json["dynamic"]);
     retval.dynamic = json["dynamic"];
@@ -1927,6 +1995,7 @@ class Def {
 Def Def_from_JSON(mixed json) {
     Def retval = Def();
 
+    if (!intp(json["def"])) error("Expected integer");
     retval.def = json["def"];
 
     return retval;
@@ -1947,6 +2016,7 @@ class Defer {
 Defer Defer_from_JSON(mixed json) {
     Defer retval = Defer();
 
+    if (!intp(json["defer"])) error("Expected integer");
     retval.defer = json["defer"];
 
     return retval;
@@ -1967,6 +2037,7 @@ class Deinit {
 Deinit Deinit_from_JSON(mixed json) {
     Deinit retval = Deinit();
 
+    if (!intp(json["deinit"])) error("Expected integer");
     retval.deinit = json["deinit"];
 
     return retval;
@@ -1987,6 +2058,7 @@ class Del {
 Del Del_from_JSON(mixed json) {
     Del retval = Del();
 
+    if (!intp(json["del"])) error("Expected integer");
     retval.del = json["del"];
 
     return retval;
@@ -2007,6 +2079,7 @@ class Delegate {
 Delegate Delegate_from_JSON(mixed json) {
     Delegate retval = Delegate();
 
+    if (!intp(json["delegate"])) error("Expected integer");
     retval.delegate = json["delegate"];
 
     return retval;
@@ -2027,6 +2100,7 @@ class Delete {
 Delete Delete_from_JSON(mixed json) {
     Delete retval = Delete();
 
+    if (!intp(json["delete"])) error("Expected integer");
     retval.delete = json["delete"];
 
     return retval;
@@ -2047,6 +2121,7 @@ class Dict {
 Dict Dict_from_JSON(mixed json) {
     Dict retval = Dict();
 
+    if (!intp(json["dict"])) error("Expected integer");
     retval.dict = json["dict"];
 
     return retval;
@@ -2067,6 +2142,7 @@ class Dictionary {
 Dictionary Dictionary_from_JSON(mixed json) {
     Dictionary retval = Dictionary();
 
+    if (!intp(json["dictionary"])) error("Expected integer");
     retval.dictionary = json["dictionary"];
 
     return retval;
@@ -2087,6 +2163,7 @@ class DidSet {
 DidSet DidSet_from_JSON(mixed json) {
     DidSet retval = DidSet();
 
+    if (!intp(json["didSet"])) error("Expected integer");
     retval.did_set = json["didSet"];
 
     return retval;
@@ -2107,6 +2184,7 @@ class Double {
 Double Double_from_JSON(mixed json) {
     Double retval = Double();
 
+    if (!intp(json["double"])) error("Expected integer");
     retval.double = json["double"];
 
     return retval;
@@ -2127,6 +2205,7 @@ class Dynamic {
 Dynamic Dynamic_from_JSON(mixed json) {
     Dynamic retval = Dynamic();
 
+    if (!intp(json["dynamic"])) error("Expected integer");
     retval.dynamic = json["dynamic"];
 
     return retval;
@@ -2147,6 +2226,7 @@ class DynamicCast {
 DynamicCast DynamicCast_from_JSON(mixed json) {
     DynamicCast retval = DynamicCast();
 
+    if (!intp(json["dynamic_cast"])) error("Expected integer");
     retval.dynamic_cast = json["dynamic_cast"];
 
     return retval;
@@ -2167,6 +2247,7 @@ class Elif {
 Elif Elif_from_JSON(mixed json) {
     Elif retval = Elif();
 
+    if (!intp(json["elif"])) error("Expected integer");
     retval.elif = json["elif"];
 
     return retval;
@@ -2187,6 +2268,7 @@ class EncodeQuickType {
 EncodeQuickType EncodeQuickType_from_JSON(mixed json) {
     EncodeQuickType retval = EncodeQuickType();
 
+    if (!intp(json["encode_quick_type"])) error("Expected integer");
     retval.encode_quick_type = json["encode_quick_type"];
 
     return retval;
@@ -2207,6 +2289,7 @@ class EqualityContract {
 EqualityContract EqualityContract_from_JSON(mixed json) {
     EqualityContract retval = EqualityContract();
 
+    if (!intp(json["equalityContract"])) error("Expected integer");
     retval.equality_contract = json["equalityContract"];
 
     return retval;
@@ -2227,6 +2310,7 @@ class Event {
 Event Event_from_JSON(mixed json) {
     Event retval = Event();
 
+    if (!intp(json["event"])) error("Expected integer");
     retval.event = json["event"];
 
     return retval;
@@ -2247,6 +2331,7 @@ class Except {
 Except Except_from_JSON(mixed json) {
     Except retval = Except();
 
+    if (!intp(json["except"])) error("Expected integer");
     retval.except = json["except"];
 
     return retval;
@@ -2267,6 +2352,7 @@ class Exception {
 Exception Exception_from_JSON(mixed json) {
     Exception retval = Exception();
 
+    if (!intp(json["exception"])) error("Expected integer");
     retval.exception = json["exception"];
 
     return retval;
@@ -2287,6 +2373,7 @@ class Explicit {
 Explicit Explicit_from_JSON(mixed json) {
     Explicit retval = Explicit();
 
+    if (!intp(json["explicit"])) error("Expected integer");
     retval.explicit = json["explicit"];
 
     return retval;
@@ -2307,6 +2394,7 @@ class Export {
 Export Export_from_JSON(mixed json) {
     Export retval = Export();
 
+    if (!intp(json["export"])) error("Expected integer");
     retval.export = json["export"];
 
     return retval;
@@ -2327,6 +2415,7 @@ class Exposing {
 Exposing Exposing_from_JSON(mixed json) {
     Exposing retval = Exposing();
 
+    if (!intp(json["exposing"])) error("Expected integer");
     retval.exposing = json["exposing"];
 
     return retval;
@@ -2347,6 +2436,7 @@ class Extends {
 Extends Extends_from_JSON(mixed json) {
     Extends retval = Extends();
 
+    if (!intp(json["extends"])) error("Expected integer");
     retval.extends = json["extends"];
 
     return retval;
@@ -2367,6 +2457,7 @@ class Extension {
 Extension Extension_from_JSON(mixed json) {
     Extension retval = Extension();
 
+    if (!intp(json["extension"])) error("Expected integer");
     retval.extension = json["extension"];
 
     return retval;
@@ -2387,6 +2478,7 @@ class Fallthrough {
 Fallthrough Fallthrough_from_JSON(mixed json) {
     Fallthrough retval = Fallthrough();
 
+    if (!intp(json["fallthrough"])) error("Expected integer");
     retval.fallthrough = json["fallthrough"];
 
     return retval;
@@ -2407,6 +2499,7 @@ class False {
 False False_from_JSON(mixed json) {
     False retval = False();
 
+    if (!intp(json["False"])) error("Expected integer");
     retval.false = json["False"];
 
     return retval;
@@ -2427,6 +2520,7 @@ class Fileprivate {
 Fileprivate Fileprivate_from_JSON(mixed json) {
     Fileprivate retval = Fileprivate();
 
+    if (!intp(json["fileprivate"])) error("Expected integer");
     retval.fileprivate = json["fileprivate"];
 
     return retval;
@@ -2447,6 +2541,7 @@ class Finally {
 Finally Finally_from_JSON(mixed json) {
     Finally retval = Finally();
 
+    if (!intp(json["finally"])) error("Expected integer");
     retval.finally = json["finally"];
 
     return retval;
@@ -2467,6 +2562,7 @@ class Fixed {
 Fixed Fixed_from_JSON(mixed json) {
     Fixed retval = Fixed();
 
+    if (!intp(json["fixed"])) error("Expected integer");
     retval.fixed = json["fixed"];
 
     return retval;
@@ -2487,6 +2583,7 @@ class Friend {
 Friend Friend_from_JSON(mixed json) {
     Friend retval = Friend();
 
+    if (!intp(json["friend"])) error("Expected integer");
     retval.friend = json["friend"];
 
     return retval;
@@ -2507,6 +2604,7 @@ class From {
 From From_from_JSON(mixed json) {
     From retval = From();
 
+    if (!intp(json["from"])) error("Expected integer");
     retval.from = json["from"];
 
     return retval;
@@ -2527,6 +2625,7 @@ class FromJson {
 FromJson FromJson_from_JSON(mixed json) {
     FromJson retval = FromJson();
 
+    if (!intp(json["from_json"])) error("Expected integer");
     retval.from_json = json["from_json"];
 
     return retval;
@@ -2547,6 +2646,7 @@ class Func {
 Func Func_from_JSON(mixed json) {
     Func retval = Func();
 
+    if (!intp(json["func"])) error("Expected integer");
     retval.func = json["func"];
 
     return retval;
@@ -2567,6 +2667,7 @@ class Get {
 Get Get_from_JSON(mixed json) {
     Get retval = Get();
 
+    if (!intp(json["get"])) error("Expected integer");
     retval.get = json["get"];
 
     return retval;
@@ -2587,6 +2688,7 @@ class Go {
 Go Go_from_JSON(mixed json) {
     Go retval = Go();
 
+    if (!intp(json["go"])) error("Expected integer");
     retval.go = json["go"];
 
     return retval;
@@ -2607,6 +2709,7 @@ class Goto {
 Goto Goto_from_JSON(mixed json) {
     Goto retval = Goto();
 
+    if (!intp(json["goto"])) error("Expected integer");
     retval.goto = json["goto"];
 
     return retval;
@@ -2627,6 +2730,7 @@ class Guard {
 Guard Guard_from_JSON(mixed json) {
     Guard retval = Guard();
 
+    if (!intp(json["guard"])) error("Expected integer");
     retval.guard = json["guard"];
 
     return retval;
@@ -2647,6 +2751,7 @@ class HasOwnProperty {
 HasOwnProperty HasOwnProperty_from_JSON(mixed json) {
     HasOwnProperty retval = HasOwnProperty();
 
+    if (!intp(json["hasOwnProperty"])) error("Expected integer");
     retval.has_own_property = json["hasOwnProperty"];
 
     return retval;
@@ -2667,6 +2772,7 @@ class Id {
 Id Id_from_JSON(mixed json) {
     Id retval = Id();
 
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
 
     return retval;
@@ -2687,6 +2793,7 @@ class Imp {
 Imp Imp_from_JSON(mixed json) {
     Imp retval = Imp();
 
+    if (!intp(json["IMP"])) error("Expected integer");
     retval.imp = json["IMP"];
 
     return retval;
@@ -2707,6 +2814,7 @@ class Implements {
 Implements Implements_from_JSON(mixed json) {
     Implements retval = Implements();
 
+    if (!intp(json["implements"])) error("Expected integer");
     retval.implements = json["implements"];
 
     return retval;
@@ -2727,6 +2835,7 @@ class Implicit {
 Implicit Implicit_from_JSON(mixed json) {
     Implicit retval = Implicit();
 
+    if (!intp(json["implicit"])) error("Expected integer");
     retval.implicit = json["implicit"];
 
     return retval;
@@ -2747,6 +2856,7 @@ class In {
 In In_from_JSON(mixed json) {
     In retval = In();
 
+    if (!intp(json["in"])) error("Expected integer");
     retval.in = json["in"];
 
     return retval;
@@ -2767,6 +2877,7 @@ class Indirect {
 Indirect Indirect_from_JSON(mixed json) {
     Indirect retval = Indirect();
 
+    if (!intp(json["indirect"])) error("Expected integer");
     retval.indirect = json["indirect"];
 
     return retval;
@@ -2787,6 +2898,7 @@ class Infix {
 Infix Infix_from_JSON(mixed json) {
     Infix retval = Infix();
 
+    if (!intp(json["infix"])) error("Expected integer");
     retval.infix = json["infix"];
 
     return retval;
@@ -2807,6 +2919,7 @@ class Init {
 Init Init_from_JSON(mixed json) {
     Init retval = Init();
 
+    if (!intp(json["init"])) error("Expected integer");
     retval.init = json["init"];
 
     return retval;
@@ -2827,6 +2940,7 @@ class Inout {
 Inout Inout_from_JSON(mixed json) {
     Inout retval = Inout();
 
+    if (!intp(json["inout"])) error("Expected integer");
     retval.inout = json["inout"];
 
     return retval;
@@ -2847,6 +2961,7 @@ class Instanceof {
 Instanceof Instanceof_from_JSON(mixed json) {
     Instanceof retval = Instanceof();
 
+    if (!intp(json["instanceof"])) error("Expected integer");
     retval.instanceof = json["instanceof"];
 
     return retval;
@@ -2867,6 +2982,7 @@ class Interface {
 Interface Interface_from_JSON(mixed json) {
     Interface retval = Interface();
 
+    if (!intp(json["interface"])) error("Expected integer");
     retval.interface = json["interface"];
 
     return retval;
@@ -2887,6 +3003,7 @@ class Internal {
 Internal Internal_from_JSON(mixed json) {
     Internal retval = Internal();
 
+    if (!intp(json["internal"])) error("Expected integer");
     retval.internal = json["internal"];
 
     return retval;
@@ -2907,6 +3024,7 @@ class Default {
 Default Default_from_JSON(mixed json) {
     Default retval = Default();
 
+    if (!intp(json["default"])) error("Expected integer");
     retval.default_default = json["default"];
 
     return retval;
@@ -2927,6 +3045,7 @@ class Do {
 Do Do_from_JSON(mixed json) {
     Do retval = Do();
 
+    if (!intp(json["do"])) error("Expected integer");
     retval.do_do = json["do"];
 
     return retval;
@@ -2947,6 +3066,7 @@ class Else {
 Else Else_from_JSON(mixed json) {
     Else retval = Else();
 
+    if (!intp(json["else"])) error("Expected integer");
     retval.else_else = json["else"];
 
     return retval;
@@ -2967,6 +3087,7 @@ class Enum {
 Enum Enum_from_JSON(mixed json) {
     Enum retval = Enum();
 
+    if (!intp(json["enum"])) error("Expected integer");
     retval.enum_enum = json["enum"];
 
     return retval;
@@ -2987,6 +3108,7 @@ class Extern {
 Extern Extern_from_JSON(mixed json) {
     Extern retval = Extern();
 
+    if (!intp(json["extern"])) error("Expected integer");
     retval.extern_extern = json["extern"];
 
     return retval;
@@ -3007,6 +3129,7 @@ class FalseClass {
 FalseClass FalseClass_from_JSON(mixed json) {
     FalseClass retval = FalseClass();
 
+    if (!intp(json["false"])) error("Expected integer");
     retval.false = json["false"];
 
     return retval;
@@ -3027,6 +3150,7 @@ class Final {
 Final Final_from_JSON(mixed json) {
     Final retval = Final();
 
+    if (!intp(json["final"])) error("Expected integer");
     retval.final_final = json["final"];
 
     return retval;
@@ -3047,6 +3171,7 @@ class Float {
 Float Float_from_JSON(mixed json) {
     Float retval = Float();
 
+    if (!intp(json["float"])) error("Expected integer");
     retval.float_float = json["float"];
 
     return retval;
@@ -3067,6 +3192,7 @@ class For {
 For For_from_JSON(mixed json) {
     For retval = For();
 
+    if (!intp(json["for"])) error("Expected integer");
     retval.for_for = json["for"];
 
     return retval;
@@ -3087,6 +3213,7 @@ class Foreach {
 Foreach Foreach_from_JSON(mixed json) {
     Foreach retval = Foreach();
 
+    if (!intp(json["foreach"])) error("Expected integer");
     retval.foreach_foreach = json["foreach"];
 
     return retval;
@@ -3107,6 +3234,7 @@ class Function {
 Function Function_from_JSON(mixed json) {
     Function retval = Function();
 
+    if (!intp(json["function"])) error("Expected integer");
     retval.function_function = json["function"];
 
     return retval;
@@ -3127,6 +3255,7 @@ class Global {
 Global Global_from_JSON(mixed json) {
     Global retval = Global();
 
+    if (!intp(json["global"])) error("Expected integer");
     retval.global_global = json["global"];
 
     return retval;
@@ -3147,6 +3276,7 @@ class If {
 If If_from_JSON(mixed json) {
     If retval = If();
 
+    if (!intp(json["if"])) error("Expected integer");
     retval.if_if = json["if"];
 
     return retval;
@@ -3167,6 +3297,7 @@ class Import {
 Import Import_from_JSON(mixed json) {
     Import retval = Import();
 
+    if (!intp(json["import"])) error("Expected integer");
     retval.import_import = json["import"];
 
     return retval;
@@ -3187,6 +3318,7 @@ class Inline {
 Inline Inline_from_JSON(mixed json) {
     Inline retval = Inline();
 
+    if (!intp(json["inline"])) error("Expected integer");
     retval.inline_inline = json["inline"];
 
     return retval;
@@ -3207,6 +3339,7 @@ class Int {
 Int Int_from_JSON(mixed json) {
     Int retval = Int();
 
+    if (!intp(json["int"])) error("Expected integer");
     retval.int_int = json["int"];
 
     return retval;
@@ -3357,6 +3490,7 @@ class Obj3 {
 Obj3 Obj3_from_JSON(mixed json) {
     Obj3 retval = Obj3();
 
+    if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     Is_from_JSON(json["is"]);
     retval.is = json["is"];
@@ -3507,6 +3641,7 @@ class Is {
 Is Is_from_JSON(mixed json) {
     Is retval = Is();
 
+    if (!intp(json["is"])) error("Expected integer");
     retval.is = json["is"];
 
     return retval;
@@ -3527,6 +3662,7 @@ class Iterable {
 Iterable Iterable_from_JSON(mixed json) {
     Iterable retval = Iterable();
 
+    if (!intp(json["iterable"])) error("Expected integer");
     retval.iterable = json["iterable"];
 
     return retval;
@@ -3547,6 +3683,7 @@ class Jdec {
 Jdec Jdec_from_JSON(mixed json) {
     Jdec retval = Jdec();
 
+    if (!intp(json["jdec"])) error("Expected integer");
     retval.jdec = json["jdec"];
 
     return retval;
@@ -3567,6 +3704,7 @@ class Jenc {
 Jenc Jenc_from_JSON(mixed json) {
     Jenc retval = Jenc();
 
+    if (!intp(json["jenc"])) error("Expected integer");
     retval.jenc = json["jenc"];
 
     return retval;
@@ -3587,6 +3725,7 @@ class Jpipe {
 Jpipe Jpipe_from_JSON(mixed json) {
     Jpipe retval = Jpipe();
 
+    if (!intp(json["jpipe"])) error("Expected integer");
     retval.jpipe = json["jpipe"];
 
     return retval;
@@ -3607,6 +3746,7 @@ class Json {
 Json Json_from_JSON(mixed json) {
     Json retval = Json();
 
+    if (!intp(json["json"])) error("Expected integer");
     retval.json = json["json"];
 
     return retval;
@@ -3627,6 +3767,7 @@ class JsonConverter {
 JsonConverter JsonConverter_from_JSON(mixed json) {
     JsonConverter retval = JsonConverter();
 
+    if (!intp(json["json_converter"])) error("Expected integer");
     retval.json_converter = json["json_converter"];
 
     return retval;
@@ -3647,6 +3788,7 @@ class JsonSerializer {
 JsonSerializer JsonSerializer_from_JSON(mixed json) {
     JsonSerializer retval = JsonSerializer();
 
+    if (!intp(json["json_serializer"])) error("Expected integer");
     retval.json_serializer = json["json_serializer"];
 
     return retval;
@@ -3667,6 +3809,7 @@ class JsonToken {
 JsonToken JsonToken_from_JSON(mixed json) {
     JsonToken retval = JsonToken();
 
+    if (!intp(json["json_token"])) error("Expected integer");
     retval.json_token = json["json_token"];
 
     return retval;
@@ -3687,6 +3830,7 @@ class JsonWriter {
 JsonWriter JsonWriter_from_JSON(mixed json) {
     JsonWriter retval = JsonWriter();
 
+    if (!intp(json["json_writer"])) error("Expected integer");
     retval.json_writer = json["json_writer"];
 
     return retval;
@@ -3707,6 +3851,7 @@ class Lazy {
 Lazy Lazy_from_JSON(mixed json) {
     Lazy retval = Lazy();
 
+    if (!intp(json["lazy"])) error("Expected integer");
     retval.lazy = json["lazy"];
 
     return retval;
@@ -3727,6 +3872,7 @@ class Left {
 Left Left_from_JSON(mixed json) {
     Left retval = Left();
 
+    if (!intp(json["left"])) error("Expected integer");
     retval.left = json["left"];
 
     return retval;
@@ -3747,6 +3893,7 @@ class Let {
 Let Let_from_JSON(mixed json) {
     Let retval = Let();
 
+    if (!intp(json["let"])) error("Expected integer");
     retval.let = json["let"];
 
     return retval;
@@ -3767,6 +3914,7 @@ class List {
 List List_from_JSON(mixed json) {
     List retval = List();
 
+    if (!intp(json["list"])) error("Expected integer");
     retval.list = json["list"];
 
     return retval;
@@ -3787,6 +3935,7 @@ class Lock {
 Lock Lock_from_JSON(mixed json) {
     Lock retval = Lock();
 
+    if (!intp(json["lock"])) error("Expected integer");
     retval.lock = json["lock"];
 
     return retval;
@@ -3807,6 +3956,7 @@ class Long {
 Long Long_from_JSON(mixed json) {
     Long retval = Long();
 
+    if (!intp(json["long"])) error("Expected integer");
     retval.long = json["long"];
 
     return retval;
@@ -3827,6 +3977,7 @@ class Map {
 Map Map_from_JSON(mixed json) {
     Map retval = Map();
 
+    if (!intp(json["map"])) error("Expected integer");
     retval.map = json["map"];
 
     return retval;
@@ -3847,6 +3998,7 @@ class MetadataPropertyHandling {
 MetadataPropertyHandling MetadataPropertyHandling_from_JSON(mixed json) {
     MetadataPropertyHandling retval = MetadataPropertyHandling();
 
+    if (!intp(json["metadata_property_handling"])) error("Expected integer");
     retval.metadata_property_handling = json["metadata_property_handling"];
 
     return retval;
@@ -3867,6 +4019,7 @@ class Module {
 Module Module_from_JSON(mixed json) {
     Module retval = Module();
 
+    if (!intp(json["module"])) error("Expected integer");
     retval.module = json["module"];
 
     return retval;
@@ -3887,6 +4040,7 @@ class Mutable {
 Mutable Mutable_from_JSON(mixed json) {
     Mutable retval = Mutable();
 
+    if (!intp(json["mutable"])) error("Expected integer");
     retval.mutable = json["mutable"];
 
     return retval;
@@ -3907,6 +4061,7 @@ class Mutating {
 Mutating Mutating_from_JSON(mixed json) {
     Mutating retval = Mutating();
 
+    if (!intp(json["mutating"])) error("Expected integer");
     retval.mutating = json["mutating"];
 
     return retval;
@@ -3927,6 +4082,7 @@ class Namespace {
 Namespace Namespace_from_JSON(mixed json) {
     Namespace retval = Namespace();
 
+    if (!intp(json["namespace"])) error("Expected integer");
     retval.namespace = json["namespace"];
 
     return retval;
@@ -3947,6 +4103,7 @@ class Native {
 Native Native_from_JSON(mixed json) {
     Native retval = Native();
 
+    if (!intp(json["native"])) error("Expected integer");
     retval.native = json["native"];
 
     return retval;
@@ -3967,6 +4124,7 @@ class New {
 New New_from_JSON(mixed json) {
     New retval = New();
 
+    if (!intp(json["new"])) error("Expected integer");
     retval.new = json["new"];
 
     return retval;
@@ -3987,6 +4145,7 @@ class Newtonsoft {
 Newtonsoft Newtonsoft_from_JSON(mixed json) {
     Newtonsoft retval = Newtonsoft();
 
+    if (!intp(json["newtonsoft"])) error("Expected integer");
     retval.newtonsoft = json["newtonsoft"];
 
     return retval;
@@ -4007,6 +4166,7 @@ class Nil {
 Nil Nil_from_JSON(mixed json) {
     Nil retval = Nil();
 
+    if (!intp(json["nil"])) error("Expected integer");
     retval.nil = json["nil"];
 
     return retval;
@@ -4027,6 +4187,7 @@ class No {
 No No_from_JSON(mixed json) {
     No retval = No();
 
+    if (!intp(json["NO"])) error("Expected integer");
     retval.no = json["NO"];
 
     return retval;
@@ -4047,6 +4208,7 @@ class Noexcept {
 Noexcept Noexcept_from_JSON(mixed json) {
     Noexcept retval = Noexcept();
 
+    if (!intp(json["noexcept"])) error("Expected integer");
     retval.noexcept = json["noexcept"];
 
     return retval;
@@ -4067,6 +4229,7 @@ class Nonatomic {
 Nonatomic Nonatomic_from_JSON(mixed json) {
     Nonatomic retval = Nonatomic();
 
+    if (!intp(json["nonatomic"])) error("Expected integer");
     retval.nonatomic = json["nonatomic"];
 
     return retval;
@@ -4087,6 +4250,7 @@ class None {
 None None_from_JSON(mixed json) {
     None retval = None();
 
+    if (!intp(json["None"])) error("Expected integer");
     retval.none = json["None"];
 
     return retval;
@@ -4107,6 +4271,7 @@ class Nonlocal {
 Nonlocal Nonlocal_from_JSON(mixed json) {
     Nonlocal retval = Nonlocal();
 
+    if (!intp(json["nonlocal"])) error("Expected integer");
     retval.nonlocal = json["nonlocal"];
 
     return retval;
@@ -4127,6 +4292,7 @@ class Nonmutating {
 Nonmutating Nonmutating_from_JSON(mixed json) {
     Nonmutating retval = Nonmutating();
 
+    if (!intp(json["nonmutating"])) error("Expected integer");
     retval.nonmutating = json["nonmutating"];
 
     return retval;
@@ -4147,6 +4313,7 @@ class Not {
 Not Not_from_JSON(mixed json) {
     Not retval = Not();
 
+    if (!intp(json["not"])) error("Expected integer");
     retval.not = json["not"];
 
     return retval;
@@ -4167,6 +4334,7 @@ class NotEq {
 NotEq NotEq_from_JSON(mixed json) {
     NotEq retval = NotEq();
 
+    if (!intp(json["not_eq"])) error("Expected integer");
     retval.not_eq = json["not_eq"];
 
     return retval;
@@ -4187,6 +4355,7 @@ class NsString {
 NsString NsString_from_JSON(mixed json) {
     NsString retval = NsString();
 
+    if (!intp(json["NSString"])) error("Expected integer");
     retval.ns_string = json["NSString"];
 
     return retval;
@@ -4207,6 +4376,7 @@ class Null {
 Null Null_from_JSON(mixed json) {
     Null retval = Null();
 
+    if (!intp(json["NULL"])) error("Expected integer");
     retval.null = json["NULL"];
 
     return retval;
@@ -4227,6 +4397,7 @@ class Nullptr {
 Nullptr Nullptr_from_JSON(mixed json) {
     Nullptr retval = Nullptr();
 
+    if (!intp(json["nullptr"])) error("Expected integer");
     retval.nullptr = json["nullptr"];
 
     return retval;
@@ -4247,6 +4418,7 @@ class Number {
 Number Number_from_JSON(mixed json) {
     Number retval = Number();
 
+    if (!intp(json["number"])) error("Expected integer");
     retval.number = json["number"];
 
     return retval;
@@ -4267,6 +4439,7 @@ class Lambda {
 Lambda Lambda_from_JSON(mixed json) {
     Lambda retval = Lambda();
 
+    if (!intp(json["lambda"])) error("Expected integer");
     retval.lambda_lambda = json["lambda"];
 
     return retval;
@@ -4287,6 +4460,7 @@ class NoneClass {
 NoneClass NoneClass_from_JSON(mixed json) {
     NoneClass retval = NoneClass();
 
+    if (!intp(json["none"])) error("Expected integer");
     retval.none = json["none"];
 
     return retval;
@@ -4307,6 +4481,7 @@ class NullClass {
 NullClass NullClass_from_JSON(mixed json) {
     NullClass retval = NullClass();
 
+    if (!intp(json["null"])) error("Expected integer");
     retval.null = json["null"];
 
     return retval;
@@ -4327,6 +4502,7 @@ class Object {
 Object Object_from_JSON(mixed json) {
     Object retval = Object();
 
+    if (!intp(json["object"])) error("Expected integer");
     retval.object_object = json["object"];
 
     return retval;
@@ -4347,6 +4523,7 @@ class Optional {
 Optional Optional_from_JSON(mixed json) {
     Optional retval = Optional();
 
+    if (!intp(json["optional"])) error("Expected integer");
     retval.optional_optional = json["optional"];
 
     return retval;
@@ -4367,6 +4544,7 @@ class Private {
 Private Private_from_JSON(mixed json) {
     Private retval = Private();
 
+    if (!intp(json["private"])) error("Expected integer");
     retval.private_private = json["private"];
 
     return retval;
@@ -4387,6 +4565,7 @@ class Protected {
 Protected Protected_from_JSON(mixed json) {
     Protected retval = Protected();
 
+    if (!intp(json["protected"])) error("Expected integer");
     retval.protected_protected = json["protected"];
 
     return retval;
@@ -4407,6 +4586,7 @@ class ProtocolClass {
 ProtocolClass ProtocolClass_from_JSON(mixed json) {
     ProtocolClass retval = ProtocolClass();
 
+    if (!intp(json["protocol"])) error("Expected integer");
     retval.protocol = json["protocol"];
 
     return retval;
@@ -4427,6 +4607,7 @@ class Of {
 Of Of_from_JSON(mixed json) {
     Of retval = Of();
 
+    if (!intp(json["of"])) error("Expected integer");
     retval.of = json["of"];
 
     return retval;
@@ -4447,6 +4628,7 @@ class Oneway {
 Oneway Oneway_from_JSON(mixed json) {
     Oneway retval = Oneway();
 
+    if (!intp(json["oneway"])) error("Expected integer");
     retval.oneway = json["oneway"];
 
     return retval;
@@ -4467,6 +4649,7 @@ class Open {
 Open Open_from_JSON(mixed json) {
     Open retval = Open();
 
+    if (!intp(json["open"])) error("Expected integer");
     retval.open = json["open"];
 
     return retval;
@@ -4487,6 +4670,7 @@ class Operator {
 Operator Operator_from_JSON(mixed json) {
     Operator retval = Operator();
 
+    if (!intp(json["operator"])) error("Expected integer");
     retval.operator = json["operator"];
 
     return retval;
@@ -4507,6 +4691,7 @@ class Or {
 Or Or_from_JSON(mixed json) {
     Or retval = Or();
 
+    if (!intp(json["or"])) error("Expected integer");
     retval.or = json["or"];
 
     return retval;
@@ -4527,6 +4712,7 @@ class OrEq {
 OrEq OrEq_from_JSON(mixed json) {
     OrEq retval = OrEq();
 
+    if (!intp(json["or_eq"])) error("Expected integer");
     retval.or_eq = json["or_eq"];
 
     return retval;
@@ -4547,6 +4733,7 @@ class Out {
 Out Out_from_JSON(mixed json) {
     Out retval = Out();
 
+    if (!intp(json["out"])) error("Expected integer");
     retval.out = json["out"];
 
     return retval;
@@ -4567,6 +4754,7 @@ class Override {
 Override Override_from_JSON(mixed json) {
     Override retval = Override();
 
+    if (!intp(json["override"])) error("Expected integer");
     retval.override = json["override"];
 
     return retval;
@@ -4587,6 +4775,7 @@ class Package {
 Package Package_from_JSON(mixed json) {
     Package retval = Package();
 
+    if (!intp(json["package"])) error("Expected integer");
     retval.package = json["package"];
 
     return retval;
@@ -4607,6 +4796,7 @@ class Params {
 Params Params_from_JSON(mixed json) {
     Params retval = Params();
 
+    if (!intp(json["params"])) error("Expected integer");
     retval.params = json["params"];
 
     return retval;
@@ -4627,6 +4817,7 @@ class Pass {
 Pass Pass_from_JSON(mixed json) {
     Pass retval = Pass();
 
+    if (!intp(json["pass"])) error("Expected integer");
     retval.pass = json["pass"];
 
     return retval;
@@ -4647,6 +4838,7 @@ class Port {
 Port Port_from_JSON(mixed json) {
     Port retval = Port();
 
+    if (!intp(json["port"])) error("Expected integer");
     retval.port = json["port"];
 
     return retval;
@@ -4667,6 +4859,7 @@ class Postfix {
 Postfix Postfix_from_JSON(mixed json) {
     Postfix retval = Postfix();
 
+    if (!intp(json["postfix"])) error("Expected integer");
     retval.postfix = json["postfix"];
 
     return retval;
@@ -4687,6 +4880,7 @@ class Precedence {
 Precedence Precedence_from_JSON(mixed json) {
     Precedence retval = Precedence();
 
+    if (!intp(json["precedence"])) error("Expected integer");
     retval.precedence = json["precedence"];
 
     return retval;
@@ -4707,6 +4901,7 @@ class Prefix {
 Prefix Prefix_from_JSON(mixed json) {
     Prefix retval = Prefix();
 
+    if (!intp(json["prefix"])) error("Expected integer");
     retval.prefix = json["prefix"];
 
     return retval;
@@ -4727,6 +4922,7 @@ class Print {
 Print Print_from_JSON(mixed json) {
     Print retval = Print();
 
+    if (!intp(json["print"])) error("Expected integer");
     retval.print = json["print"];
 
     return retval;
@@ -4747,6 +4943,7 @@ class PrintMembers {
 PrintMembers PrintMembers_from_JSON(mixed json) {
     PrintMembers retval = PrintMembers();
 
+    if (!intp(json["printMembers"])) error("Expected integer");
     retval.print_members = json["printMembers"];
 
     return retval;
@@ -4767,6 +4964,7 @@ class Printf {
 Printf Printf_from_JSON(mixed json) {
     Printf retval = Printf();
 
+    if (!intp(json["printf"])) error("Expected integer");
     retval.printf = json["printf"];
 
     return retval;
@@ -4787,6 +4985,7 @@ class Protocol {
 Protocol Protocol_from_JSON(mixed json) {
     Protocol retval = Protocol();
 
+    if (!intp(json["Protocol"])) error("Expected integer");
     retval.protocol = json["Protocol"];
 
     return retval;
@@ -4935,6 +5134,7 @@ class Obj4 {
 Obj4 Obj4_from_JSON(mixed json) {
     Obj4 retval = Obj4();
 
+    if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     Public_from_JSON(json["public"]);
     retval.obj4_public = json["public"];
@@ -5083,6 +5283,7 @@ class Public {
 Public Public_from_JSON(mixed json) {
     Public retval = Public();
 
+    if (!intp(json["public"])) error("Expected integer");
     retval.public_public = json["public"];
 
     return retval;
@@ -5103,6 +5304,7 @@ class Return {
 Return Return_from_JSON(mixed json) {
     Return retval = Return();
 
+    if (!intp(json["return"])) error("Expected integer");
     retval.return_return = json["return"];
 
     return retval;
@@ -5123,6 +5325,7 @@ class SelfClass {
 SelfClass SelfClass_from_JSON(mixed json) {
     SelfClass retval = SelfClass();
 
+    if (!intp(json["self"])) error("Expected integer");
     retval.self = json["self"];
 
     return retval;
@@ -5143,6 +5346,7 @@ class Static {
 Static Static_from_JSON(mixed json) {
     Static retval = Static();
 
+    if (!intp(json["static"])) error("Expected integer");
     retval.static_static = json["static"];
 
     return retval;
@@ -5163,6 +5367,7 @@ class String {
 String String_from_JSON(mixed json) {
     String retval = String();
 
+    if (!intp(json["string"])) error("Expected integer");
     retval.string_string = json["string"];
 
     return retval;
@@ -5183,6 +5388,7 @@ class Switch {
 Switch Switch_from_JSON(mixed json) {
     Switch retval = Switch();
 
+    if (!intp(json["switch"])) error("Expected integer");
     retval.switch_switch = json["switch"];
 
     return retval;
@@ -5203,6 +5409,7 @@ class TrueClass {
 TrueClass TrueClass_from_JSON(mixed json) {
     TrueClass retval = TrueClass();
 
+    if (!intp(json["true"])) error("Expected integer");
     retval.true = json["true"];
 
     return retval;
@@ -5223,6 +5430,7 @@ class TypeClass {
 TypeClass TypeClass_from_JSON(mixed json) {
     TypeClass retval = TypeClass();
 
+    if (!intp(json["type"])) error("Expected integer");
     retval.type = json["type"];
 
     return retval;
@@ -5243,6 +5451,7 @@ class Typedef {
 Typedef Typedef_from_JSON(mixed json) {
     Typedef retval = Typedef();
 
+    if (!intp(json["typedef"])) error("Expected integer");
     retval.typedef_typedef = json["typedef"];
 
     return retval;
@@ -5263,6 +5472,7 @@ class Typeof {
 Typeof Typeof_from_JSON(mixed json) {
     Typeof retval = Typeof();
 
+    if (!intp(json["typeof"])) error("Expected integer");
     retval.typeof_typeof = json["typeof"];
 
     return retval;
@@ -5283,6 +5493,7 @@ class Quicktype {
 Quicktype Quicktype_from_JSON(mixed json) {
     Quicktype retval = Quicktype();
 
+    if (!intp(json["quicktype"])) error("Expected integer");
     retval.quicktype = json["quicktype"];
 
     return retval;
@@ -5303,6 +5514,7 @@ class Raise {
 Raise Raise_from_JSON(mixed json) {
     Raise retval = Raise();
 
+    if (!intp(json["raise"])) error("Expected integer");
     retval.raise = json["raise"];
 
     return retval;
@@ -5323,6 +5535,7 @@ class Range {
 Range Range_from_JSON(mixed json) {
     Range retval = Range();
 
+    if (!intp(json["range"])) error("Expected integer");
     retval.range = json["range"];
 
     return retval;
@@ -5343,6 +5556,7 @@ class Readonly {
 Readonly Readonly_from_JSON(mixed json) {
     Readonly retval = Readonly();
 
+    if (!intp(json["readonly"])) error("Expected integer");
     retval.readonly = json["readonly"];
 
     return retval;
@@ -5363,6 +5577,7 @@ class Ref {
 Ref Ref_from_JSON(mixed json) {
     Ref retval = Ref();
 
+    if (!intp(json["ref"])) error("Expected integer");
     retval.ref = json["ref"];
 
     return retval;
@@ -5383,6 +5598,7 @@ class Register {
 Register Register_from_JSON(mixed json) {
     Register retval = Register();
 
+    if (!intp(json["register"])) error("Expected integer");
     retval.register = json["register"];
 
     return retval;
@@ -5403,6 +5619,7 @@ class ReinterpretCast {
 ReinterpretCast ReinterpretCast_from_JSON(mixed json) {
     ReinterpretCast retval = ReinterpretCast();
 
+    if (!intp(json["reinterpret_cast"])) error("Expected integer");
     retval.reinterpret_cast = json["reinterpret_cast"];
 
     return retval;
@@ -5423,6 +5640,7 @@ class Repeat {
 Repeat Repeat_from_JSON(mixed json) {
     Repeat retval = Repeat();
 
+    if (!intp(json["repeat"])) error("Expected integer");
     retval.repeat = json["repeat"];
 
     return retval;
@@ -5443,6 +5661,7 @@ class Require {
 Require Require_from_JSON(mixed json) {
     Require retval = Require();
 
+    if (!intp(json["require"])) error("Expected integer");
     retval.require = json["require"];
 
     return retval;
@@ -5463,6 +5682,7 @@ class Required {
 Required Required_from_JSON(mixed json) {
     Required retval = Required();
 
+    if (!intp(json["required"])) error("Expected integer");
     retval.required = json["required"];
 
     return retval;
@@ -5483,6 +5703,7 @@ class Requires {
 Requires Requires_from_JSON(mixed json) {
     Requires retval = Requires();
 
+    if (!intp(json["requires"])) error("Expected integer");
     retval.requires = json["requires"];
 
     return retval;
@@ -5503,6 +5724,7 @@ class Restrict {
 Restrict Restrict_from_JSON(mixed json) {
     Restrict retval = Restrict();
 
+    if (!intp(json["restrict"])) error("Expected integer");
     retval.restrict = json["restrict"];
 
     return retval;
@@ -5523,6 +5745,7 @@ class Retain {
 Retain Retain_from_JSON(mixed json) {
     Retain retval = Retain();
 
+    if (!intp(json["retain"])) error("Expected integer");
     retval.retain = json["retain"];
 
     return retval;
@@ -5543,6 +5766,7 @@ class Rethrows {
 Rethrows Rethrows_from_JSON(mixed json) {
     Rethrows retval = Rethrows();
 
+    if (!intp(json["rethrows"])) error("Expected integer");
     retval.rethrows = json["rethrows"];
 
     return retval;
@@ -5563,6 +5787,7 @@ class Right {
 Right Right_from_JSON(mixed json) {
     Right retval = Right();
 
+    if (!intp(json["right"])) error("Expected integer");
     retval.right = json["right"];
 
     return retval;
@@ -5583,6 +5808,7 @@ class Sbyte {
 Sbyte Sbyte_from_JSON(mixed json) {
     Sbyte retval = Sbyte();
 
+    if (!intp(json["sbyte"])) error("Expected integer");
     retval.sbyte = json["sbyte"];
 
     return retval;
@@ -5603,6 +5829,7 @@ class Sealed {
 Sealed Sealed_from_JSON(mixed json) {
     Sealed retval = Sealed();
 
+    if (!intp(json["sealed"])) error("Expected integer");
     retval.sealed = json["sealed"];
 
     return retval;
@@ -5623,6 +5850,7 @@ class Sel {
 Sel Sel_from_JSON(mixed json) {
     Sel retval = Sel();
 
+    if (!intp(json["SEL"])) error("Expected integer");
     retval.sel = json["SEL"];
 
     return retval;
@@ -5643,6 +5871,7 @@ class Select {
 Select Select_from_JSON(mixed json) {
     Select retval = Select();
 
+    if (!intp(json["select"])) error("Expected integer");
     retval.select = json["select"];
 
     return retval;
@@ -5663,6 +5892,7 @@ class Self {
 Self Self_from_JSON(mixed json) {
     Self retval = Self();
 
+    if (!intp(json["Self"])) error("Expected integer");
     retval.self = json["Self"];
 
     return retval;
@@ -5683,6 +5913,7 @@ class Serialize {
 Serialize Serialize_from_JSON(mixed json) {
     Serialize retval = Serialize();
 
+    if (!intp(json["serialize"])) error("Expected integer");
     retval.serialize = json["serialize"];
 
     return retval;
@@ -5703,6 +5934,7 @@ class Set {
 Set Set_from_JSON(mixed json) {
     Set retval = Set();
 
+    if (!intp(json["set"])) error("Expected integer");
     retval.set = json["set"];
 
     return retval;
@@ -5723,6 +5955,7 @@ class Short {
 Short Short_from_JSON(mixed json) {
     Short retval = Short();
 
+    if (!intp(json["short"])) error("Expected integer");
     retval.short = json["short"];
 
     return retval;
@@ -5743,6 +5976,7 @@ class Signed {
 Signed Signed_from_JSON(mixed json) {
     Signed retval = Signed();
 
+    if (!intp(json["signed"])) error("Expected integer");
     retval.signed = json["signed"];
 
     return retval;
@@ -5763,6 +5997,7 @@ class Sizeof {
 Sizeof Sizeof_from_JSON(mixed json) {
     Sizeof retval = Sizeof();
 
+    if (!intp(json["sizeof"])) error("Expected integer");
     retval.sizeof = json["sizeof"];
 
     return retval;
@@ -5783,6 +6018,7 @@ class Stackalloc {
 Stackalloc Stackalloc_from_JSON(mixed json) {
     Stackalloc retval = Stackalloc();
 
+    if (!intp(json["stackalloc"])) error("Expected integer");
     retval.stackalloc = json["stackalloc"];
 
     return retval;
@@ -5803,6 +6039,7 @@ class StaticAssert {
 StaticAssert StaticAssert_from_JSON(mixed json) {
     StaticAssert retval = StaticAssert();
 
+    if (!intp(json["static_assert"])) error("Expected integer");
     retval.static_assert = json["static_assert"];
 
     return retval;
@@ -5823,6 +6060,7 @@ class StaticCast {
 StaticCast StaticCast_from_JSON(mixed json) {
     StaticCast retval = StaticCast();
 
+    if (!intp(json["static_cast"])) error("Expected integer");
     retval.static_cast = json["static_cast"];
 
     return retval;
@@ -5843,6 +6081,7 @@ class Strictfp {
 Strictfp Strictfp_from_JSON(mixed json) {
     Strictfp retval = Strictfp();
 
+    if (!intp(json["strictfp"])) error("Expected integer");
     retval.strictfp = json["strictfp"];
 
     return retval;
@@ -5863,6 +6102,7 @@ class Struct {
 Struct Struct_from_JSON(mixed json) {
     Struct retval = Struct();
 
+    if (!intp(json["struct"])) error("Expected integer");
     retval.struct = json["struct"];
 
     return retval;
@@ -5883,6 +6123,7 @@ class Subscript {
 Subscript Subscript_from_JSON(mixed json) {
     Subscript retval = Subscript();
 
+    if (!intp(json["subscript"])) error("Expected integer");
     retval.subscript = json["subscript"];
 
     return retval;
@@ -5903,6 +6144,7 @@ class Super {
 Super Super_from_JSON(mixed json) {
     Super retval = Super();
 
+    if (!intp(json["super"])) error("Expected integer");
     retval.super = json["super"];
 
     return retval;
@@ -5923,6 +6165,7 @@ class Symbol {
 Symbol Symbol_from_JSON(mixed json) {
     Symbol retval = Symbol();
 
+    if (!intp(json["symbol"])) error("Expected integer");
     retval.symbol = json["symbol"];
 
     return retval;
@@ -5943,6 +6186,7 @@ class Synchronized {
 Synchronized Synchronized_from_JSON(mixed json) {
     Synchronized retval = Synchronized();
 
+    if (!intp(json["synchronized"])) error("Expected integer");
     retval.synchronized = json["synchronized"];
 
     return retval;
@@ -5963,6 +6207,7 @@ class System {
 System System_from_JSON(mixed json) {
     System retval = System();
 
+    if (!intp(json["system"])) error("Expected integer");
     retval.system = json["system"];
 
     return retval;
@@ -5983,6 +6228,7 @@ class Template {
 Template Template_from_JSON(mixed json) {
     Template retval = Template();
 
+    if (!intp(json["template"])) error("Expected integer");
     retval.template = json["template"];
 
     return retval;
@@ -6003,6 +6249,7 @@ class Then {
 Then Then_from_JSON(mixed json) {
     Then retval = Then();
 
+    if (!intp(json["then"])) error("Expected integer");
     retval.then = json["then"];
 
     return retval;
@@ -6023,6 +6270,7 @@ class This {
 This This_from_JSON(mixed json) {
     This retval = This();
 
+    if (!intp(json["this"])) error("Expected integer");
     retval.this = json["this"];
 
     return retval;
@@ -6043,6 +6291,7 @@ class ThreadLocal {
 ThreadLocal ThreadLocal_from_JSON(mixed json) {
     ThreadLocal retval = ThreadLocal();
 
+    if (!intp(json["thread_local"])) error("Expected integer");
     retval.thread_local = json["thread_local"];
 
     return retval;
@@ -6063,6 +6312,7 @@ class Throw {
 Throw Throw_from_JSON(mixed json) {
     Throw retval = Throw();
 
+    if (!intp(json["throw"])) error("Expected integer");
     retval.throw = json["throw"];
 
     return retval;
@@ -6083,6 +6333,7 @@ class Throws {
 Throws Throws_from_JSON(mixed json) {
     Throws retval = Throws();
 
+    if (!intp(json["throws"])) error("Expected integer");
     retval.throws = json["throws"];
 
     return retval;
@@ -6103,6 +6354,7 @@ class ToJson {
 ToJson ToJson_from_JSON(mixed json) {
     ToJson retval = ToJson();
 
+    if (!intp(json["to_json"])) error("Expected integer");
     retval.to_json = json["to_json"];
 
     return retval;
@@ -6123,6 +6375,7 @@ class TopLevelClass {
 TopLevelClass TopLevelClass_from_JSON(mixed json) {
     TopLevelClass retval = TopLevelClass();
 
+    if (!intp(json["top_level"])) error("Expected integer");
     retval.top_level = json["top_level"];
 
     return retval;
@@ -6143,6 +6396,7 @@ class Transient {
 Transient Transient_from_JSON(mixed json) {
     Transient retval = Transient();
 
+    if (!intp(json["transient"])) error("Expected integer");
     retval.transient = json["transient"];
 
     return retval;
@@ -6163,6 +6417,7 @@ class True {
 True True_from_JSON(mixed json) {
     True retval = True();
 
+    if (!intp(json["True"])) error("Expected integer");
     retval.true = json["True"];
 
     return retval;
@@ -6183,6 +6438,7 @@ class Try {
 Try Try_from_JSON(mixed json) {
     Try retval = Try();
 
+    if (!intp(json["try"])) error("Expected integer");
     retval.try = json["try"];
 
     return retval;
@@ -6203,6 +6459,7 @@ class Type {
 Type Type_from_JSON(mixed json) {
     Type retval = Type();
 
+    if (!intp(json["Type"])) error("Expected integer");
     retval.type = json["Type"];
 
     return retval;
@@ -6223,6 +6480,7 @@ class Typealias {
 Typealias Typealias_from_JSON(mixed json) {
     Typealias retval = Typealias();
 
+    if (!intp(json["typealias"])) error("Expected integer");
     retval.typealias = json["typealias"];
 
     return retval;
@@ -6243,6 +6501,7 @@ class Typeid {
 Typeid Typeid_from_JSON(mixed json) {
     Typeid retval = Typeid();
 
+    if (!intp(json["typeid"])) error("Expected integer");
     retval.typeid = json["typeid"];
 
     return retval;
@@ -6263,6 +6522,7 @@ class Typename {
 Typename Typename_from_JSON(mixed json) {
     Typename retval = Typename();
 
+    if (!intp(json["typename"])) error("Expected integer");
     retval.typename = json["typename"];
 
     return retval;
@@ -6283,6 +6543,7 @@ class Uint {
 Uint Uint_from_JSON(mixed json) {
     Uint retval = Uint();
 
+    if (!intp(json["uint"])) error("Expected integer");
     retval.uint = json["uint"];
 
     return retval;
@@ -6303,6 +6564,7 @@ class Ulong {
 Ulong Ulong_from_JSON(mixed json) {
     Ulong retval = Ulong();
 
+    if (!intp(json["ulong"])) error("Expected integer");
     retval.ulong = json["ulong"];
 
     return retval;
@@ -6323,6 +6585,7 @@ class Unchecked {
 Unchecked Unchecked_from_JSON(mixed json) {
     Unchecked retval = Unchecked();
 
+    if (!intp(json["unchecked"])) error("Expected integer");
     retval.unchecked = json["unchecked"];
 
     return retval;
@@ -6343,6 +6606,7 @@ class Undefined {
 Undefined Undefined_from_JSON(mixed json) {
     Undefined retval = Undefined();
 
+    if (!intp(json["undefined"])) error("Expected integer");
     retval.undefined = json["undefined"];
 
     return retval;
@@ -6403,6 +6667,7 @@ class Obj5 {
 Obj5 Obj5_from_JSON(mixed json) {
     Obj5 retval = Obj5();
 
+    if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     Void_from_JSON(json["void"]);
     retval.obj5_void = json["void"];
@@ -6463,6 +6728,7 @@ class Void {
 Void Void_from_JSON(mixed json) {
     Void retval = Void();
 
+    if (!intp(json["void"])) error("Expected integer");
     retval.void_void = json["void"];
 
     return retval;
@@ -6483,6 +6749,7 @@ class While {
 While While_from_JSON(mixed json) {
     While retval = While();
 
+    if (!intp(json["while"])) error("Expected integer");
     retval.while_while = json["while"];
 
     return retval;
@@ -6503,6 +6770,7 @@ class Union {
 Union Union_from_JSON(mixed json) {
     Union retval = Union();
 
+    if (!intp(json["union"])) error("Expected integer");
     retval.union = json["union"];
 
     return retval;
@@ -6523,6 +6791,7 @@ class Unowned {
 Unowned Unowned_from_JSON(mixed json) {
     Unowned retval = Unowned();
 
+    if (!intp(json["unowned"])) error("Expected integer");
     retval.unowned = json["unowned"];
 
     return retval;
@@ -6543,6 +6812,7 @@ class Unsafe {
 Unsafe Unsafe_from_JSON(mixed json) {
     Unsafe retval = Unsafe();
 
+    if (!intp(json["unsafe"])) error("Expected integer");
     retval.unsafe = json["unsafe"];
 
     return retval;
@@ -6563,6 +6833,7 @@ class Unsigned {
 Unsigned Unsigned_from_JSON(mixed json) {
     Unsigned retval = Unsigned();
 
+    if (!intp(json["unsigned"])) error("Expected integer");
     retval.unsigned = json["unsigned"];
 
     return retval;
@@ -6583,6 +6854,7 @@ class Ushort {
 Ushort Ushort_from_JSON(mixed json) {
     Ushort retval = Ushort();
 
+    if (!intp(json["ushort"])) error("Expected integer");
     retval.ushort = json["ushort"];
 
     return retval;
@@ -6603,6 +6875,7 @@ class Using {
 Using Using_from_JSON(mixed json) {
     Using retval = Using();
 
+    if (!intp(json["using"])) error("Expected integer");
     retval.using = json["using"];
 
     return retval;
@@ -6623,6 +6896,7 @@ class Var {
 Var Var_from_JSON(mixed json) {
     Var retval = Var();
 
+    if (!intp(json["var"])) error("Expected integer");
     retval.var = json["var"];
 
     return retval;
@@ -6643,6 +6917,7 @@ class Virtual {
 Virtual Virtual_from_JSON(mixed json) {
     Virtual retval = Virtual();
 
+    if (!intp(json["virtual"])) error("Expected integer");
     retval.virtual = json["virtual"];
 
     return retval;
@@ -6663,6 +6938,7 @@ class Volatile {
 Volatile Volatile_from_JSON(mixed json) {
     Volatile retval = Volatile();
 
+    if (!intp(json["volatile"])) error("Expected integer");
     retval.volatile = json["volatile"];
 
     return retval;
@@ -6683,6 +6959,7 @@ class WcharT {
 WcharT WcharT_from_JSON(mixed json) {
     WcharT retval = WcharT();
 
+    if (!intp(json["wchar_t"])) error("Expected integer");
     retval.wchar_t = json["wchar_t"];
 
     return retval;
@@ -6703,6 +6980,7 @@ class Weak {
 Weak Weak_from_JSON(mixed json) {
     Weak retval = Weak();
 
+    if (!intp(json["weak"])) error("Expected integer");
     retval.weak = json["weak"];
 
     return retval;
@@ -6723,6 +7001,7 @@ class Where {
 Where Where_from_JSON(mixed json) {
     Where retval = Where();
 
+    if (!intp(json["where"])) error("Expected integer");
     retval.where = json["where"];
 
     return retval;
@@ -6743,6 +7022,7 @@ class WillSet {
 WillSet WillSet_from_JSON(mixed json) {
     WillSet retval = WillSet();
 
+    if (!intp(json["willSet"])) error("Expected integer");
     retval.will_set = json["willSet"];
 
     return retval;
@@ -6763,6 +7043,7 @@ class With {
 With With_from_JSON(mixed json) {
     With retval = With();
 
+    if (!intp(json["with"])) error("Expected integer");
     retval.with = json["with"];
 
     return retval;
@@ -6783,6 +7064,7 @@ class Xor {
 Xor Xor_from_JSON(mixed json) {
     Xor retval = Xor();
 
+    if (!intp(json["xor"])) error("Expected integer");
     retval.xor = json["xor"];
 
     return retval;
@@ -6803,6 +7085,7 @@ class XorEq {
 XorEq XorEq_from_JSON(mixed json) {
     XorEq retval = XorEq();
 
+    if (!intp(json["xor_eq"])) error("Expected integer");
     retval.xor_eq = json["xor_eq"];
 
     return retval;
@@ -6823,6 +7106,7 @@ class Yes {
 Yes Yes_from_JSON(mixed json) {
     Yes retval = Yes();
 
+    if (!intp(json["YES"])) error("Expected integer");
     retval.yes = json["YES"];
 
     return retval;
@@ -6843,6 +7127,7 @@ class Yield {
 Yield Yield_from_JSON(mixed json) {
     Yield retval = Yield();
 
+    if (!intp(json["yield"])) error("Expected integer");
     retval.yield = json["yield"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/list.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/list.json/default/TopLevel.pmod
index 9de76af..74dd3f0 100644
--- a/base/pike/test/inputs/json/priority/list.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/list.json/default/TopLevel.pmod
@@ -29,6 +29,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["data"])) error("Expected integer");
     retval.data = json["data"];
     if (!has_index(json, "next")) error("Missing required property");
     if (has_index(json, "next") && json["next"] != Val.null) TopLevel_from_JSON(json["next"]);
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 d7ff9a4..e9f26f1 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
@@ -39,6 +39,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["anEasyOne"])) error("Expected integer");
     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"];
diff --git a/base/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod
index 35031e4..4251b94 100644
--- a/base/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/nbl-stats.json/default/TopLevel.pmod
@@ -65,9 +65,12 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["attendance"])) error("Expected integer");
     retval.attendance = json["attendance"];
     retval.clock = json["clock"];
+    if (!intp(json["disableMatch"])) error("Expected integer");
     retval.disable_match = json["disableMatch"];
+    if (!intp(json["inOT"])) error("Expected integer");
     retval.in_ot = json["inOT"];
     retval.leaddata = json["leaddata"];
     retval.officials_referee1 = json["officials_referee1"];
@@ -75,15 +78,20 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.officials_referee3 = json["officials_referee3"];
     retval.othermatches = json["othermatches"];
     retval.pbp = json["pbp"];
+    if (!intp(json["period"])) error("Expected integer");
     retval.period = json["period"];
+    if (!intp(json["periodLengthOVERTIME"])) error("Expected integer");
     retval.period_length_overtime = json["periodLengthOVERTIME"];
+    if (!intp(json["periodLengthREGULAR"])) error("Expected integer");
     retval.period_length_regular = json["periodLengthREGULAR"];
     retval.period_type = PerType_from_JSON(json["periodType"]);
+    if (!intp(json["periodsMax"])) error("Expected integer");
     retval.periods_max = json["periodsMax"];
     foreach (json["scorers"]; mixed _; mixed value) if (!arrayp(value)) error("Expected array");
     retval.scorers = json["scorers"];
     retval.timeline = json["timeline"];
     retval.tm = json["tm"];
+    if (!intp(json["totalTimeAdded"])) error("Expected integer");
     retval.total_time_added = json["totalTimeAdded"];
     Totallds_from_JSON(json["totallds"]);
     retval.totallds = json["totallds"];
@@ -147,15 +155,18 @@ Othermatch Othermatch_from_JSON(mixed json) {
     retval.clock = json["clock"];
     retval.competition_name = json["competitionName"];
     retval.id = json["id"];
+    if (!intp(json["period"])) error("Expected integer");
     retval.period = json["period"];
     retval.period_type = PerType_from_JSON(json["periodType"]);
     Team_from_JSON(json["team1"]);
     retval.team1 = json["team1"];
     retval.team1_name = json["team1Name"];
+    if (!intp(json["team1Score"])) error("Expected integer");
     retval.team1_score = json["team1Score"];
     Team_from_JSON(json["team2"]);
     retval.team2 = json["team2"];
     retval.team2_name = json["team2Name"];
+    if (!intp(json["team2Score"])) error("Expected integer");
     retval.team2_score = json["team2Score"];
 
     return retval;
@@ -269,19 +280,27 @@ Pbp Pbp_from_JSON(mixed json) {
     retval.international_family_name_initial = FamilyNameInitial_from_JSON(json["internationalFamilyNameInitial"]);
     retval.international_first_name = json["internationalFirstName"];
     retval.international_first_name_initial = FirstNameInitial_from_JSON(json["internationalFirstNameInitial"]);
+    if (!intp(json["lead"])) error("Expected integer");
     retval.lead = json["lead"];
+    if (!intp(json["period"])) error("Expected integer");
     retval.period = json["period"];
     retval.period_type = PerType_from_JSON(json["periodType"]);
     retval.player = json["player"];
+    if (!intp(json["pno"])) error("Expected integer");
     retval.pno = json["pno"];
     retval.qualifier = json["qualifier"];
+    if (!intp(json["s1"])) error("Expected integer");
     retval.s1 = json["s1"];
+    if (!intp(json["s2"])) error("Expected integer");
     retval.s2 = json["s2"];
     retval.scoreboard_name = ScoreboardName_from_JSON(json["scoreboardName"]);
+    if (!intp(json["scoring"])) error("Expected integer");
     retval.scoring = json["scoring"];
     retval.shirt_number = json["shirtNumber"];
     retval.sub_type = json["subType"];
+    if (!intp(json["success"])) error("Expected integer");
     retval.success = json["success"];
+    if (!intp(json["tno"])) error("Expected integer");
     retval.tno = json["tno"];
 
     return retval;
@@ -427,11 +446,13 @@ Scorer Scorer_from_JSON(mixed json) {
     retval.per = json["per"];
     retval.per_type = PerType_from_JSON(json["perType"]);
     retval.player = json["player"];
+    if (!intp(json["pno"])) error("Expected integer");
     retval.pno = json["pno"];
     retval.scoreboard_name = ScoreboardName_from_JSON(json["scoreboardName"]);
     retval.shirt_number = json["shirtNumber"];
     retval.summary = json["summary"];
     retval.times = json["times"];
+    if (!intp(json["tno"])) error("Expected integer");
     retval.tno = json["tno"];
     retval.tot = json["tot"];
 
@@ -458,6 +479,7 @@ Time Time_from_JSON(mixed json) {
     Time retval = Time();
 
     retval.gt = json["gt"];
+    if (!intp(json["per"])) error("Expected integer");
     retval.per = json["per"];
     retval.per_type = PerType_from_JSON(json["perType"]);
 
@@ -609,69 +631,121 @@ Tm Tm_from_JSON(mixed json) {
 
     retval.code = json["code"];
     retval.code_international = json["codeInternational"];
+    if (!intp(json["fouls"])) error("Expected integer");
     retval.fouls = json["fouls"];
+    if (!intp(json["full_score"])) error("Expected integer");
     retval.full_score = json["full_score"];
     Lds_from_JSON(json["lds"]);
     retval.lds = json["lds"];
     retval.logo = json["logo"];
     retval.name = json["name"];
     retval.name_international = json["nameInternational"];
+    if (!intp(json["p1_score"])) error("Expected integer");
     retval.p1_score = json["p1_score"];
+    if (!intp(json["p2_score"])) error("Expected integer");
     retval.p2_score = json["p2_score"];
+    if (!intp(json["p3_score"])) error("Expected integer");
     retval.p3_score = json["p3_score"];
+    if (!intp(json["p4_score"])) error("Expected integer");
     retval.p4_score = json["p4_score"];
     retval.pl = json["pl"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     retval.scoring = json["scoring"];
     retval.short_name = json["shortName"];
     retval.short_name_international = json["shortNameInternational"];
     retval.shot = json["shot"];
+    if (!intp(json["timeouts"])) error("Expected integer");
     retval.timeouts = json["timeouts"];
+    if (!intp(json["tot_eff_1"])) error("Expected integer");
     retval.tot_eff_1 = json["tot_eff_1"];
+    if (!intp(json["tot_eff_2"])) error("Expected integer");
     retval.tot_eff_2 = json["tot_eff_2"];
     retval.tot_eff_3 = (float)json["tot_eff_3"];
+    if (!intp(json["tot_eff_4"])) error("Expected integer");
     retval.tot_eff_4 = json["tot_eff_4"];
+    if (!intp(json["tot_eff_5"])) error("Expected integer");
     retval.tot_eff_5 = json["tot_eff_5"];
+    if (!intp(json["tot_eff_6"])) error("Expected integer");
     retval.tot_eff_6 = json["tot_eff_6"];
+    if (!intp(json["tot_eff_7"])) error("Expected integer");
     retval.tot_eff_7 = json["tot_eff_7"];
+    if (!intp(json["tot_sAssists"])) error("Expected integer");
     retval.tot_s_assists = json["tot_sAssists"];
+    if (!intp(json["tot_sBenchPoints"])) error("Expected integer");
     retval.tot_s_bench_points = json["tot_sBenchPoints"];
+    if (!intp(json["tot_sBiggestLead"])) error("Expected integer");
     retval.tot_s_biggest_lead = json["tot_sBiggestLead"];
+    if (!intp(json["tot_sBiggestScoringRun"])) error("Expected integer");
     retval.tot_s_biggest_scoring_run = json["tot_sBiggestScoringRun"];
+    if (!intp(json["tot_sBlocks"])) error("Expected integer");
     retval.tot_s_blocks = json["tot_sBlocks"];
+    if (!intp(json["tot_sBlocksReceived"])) error("Expected integer");
     retval.tot_s_blocks_received = json["tot_sBlocksReceived"];
+    if (!intp(json["tot_sFieldGoalsAttempted"])) error("Expected integer");
     retval.tot_s_field_goals_attempted = json["tot_sFieldGoalsAttempted"];
+    if (!intp(json["tot_sFieldGoalsMade"])) error("Expected integer");
     retval.tot_s_field_goals_made = json["tot_sFieldGoalsMade"];
+    if (!intp(json["tot_sFieldGoalsPercentage"])) error("Expected integer");
     retval.tot_s_field_goals_percentage = json["tot_sFieldGoalsPercentage"];
+    if (!intp(json["tot_sFoulsOn"])) error("Expected integer");
     retval.tot_s_fouls_on = json["tot_sFoulsOn"];
+    if (!intp(json["tot_sFoulsPersonal"])) error("Expected integer");
     retval.tot_s_fouls_personal = json["tot_sFoulsPersonal"];
+    if (!intp(json["tot_sFoulsTeam"])) error("Expected integer");
     retval.tot_s_fouls_team = json["tot_sFoulsTeam"];
+    if (!intp(json["tot_sFreeThrowsAttempted"])) error("Expected integer");
     retval.tot_s_free_throws_attempted = json["tot_sFreeThrowsAttempted"];
+    if (!intp(json["tot_sFreeThrowsMade"])) error("Expected integer");
     retval.tot_s_free_throws_made = json["tot_sFreeThrowsMade"];
+    if (!intp(json["tot_sFreeThrowsPercentage"])) error("Expected integer");
     retval.tot_s_free_throws_percentage = json["tot_sFreeThrowsPercentage"];
+    if (!intp(json["tot_sLeadChanges"])) error("Expected integer");
     retval.tot_s_lead_changes = json["tot_sLeadChanges"];
+    if (!intp(json["tot_sMinutes"])) error("Expected integer");
     retval.tot_s_minutes = json["tot_sMinutes"];
+    if (!intp(json["tot_sPoints"])) error("Expected integer");
     retval.tot_s_points = json["tot_sPoints"];
+    if (!intp(json["tot_sPointsFastBreak"])) error("Expected integer");
     retval.tot_s_points_fast_break = json["tot_sPointsFastBreak"];
+    if (!intp(json["tot_sPointsFromTurnovers"])) error("Expected integer");
     retval.tot_s_points_from_turnovers = json["tot_sPointsFromTurnovers"];
+    if (!intp(json["tot_sPointsInThePaint"])) error("Expected integer");
     retval.tot_s_points_in_the_paint = json["tot_sPointsInThePaint"];
+    if (!intp(json["tot_sPointsSecondChance"])) error("Expected integer");
     retval.tot_s_points_second_chance = json["tot_sPointsSecondChance"];
+    if (!intp(json["tot_sReboundsDefensive"])) error("Expected integer");
     retval.tot_s_rebounds_defensive = json["tot_sReboundsDefensive"];
+    if (!intp(json["tot_sReboundsOffensive"])) error("Expected integer");
     retval.tot_s_rebounds_offensive = json["tot_sReboundsOffensive"];
+    if (!intp(json["tot_sReboundsTeam"])) error("Expected integer");
     retval.tot_s_rebounds_team = json["tot_sReboundsTeam"];
+    if (!intp(json["tot_sReboundsTeamDefensive"])) error("Expected integer");
     retval.tot_s_rebounds_team_defensive = json["tot_sReboundsTeamDefensive"];
+    if (!intp(json["tot_sReboundsTeamOffensive"])) error("Expected integer");
     retval.tot_s_rebounds_team_offensive = json["tot_sReboundsTeamOffensive"];
+    if (!intp(json["tot_sReboundsTotal"])) error("Expected integer");
     retval.tot_s_rebounds_total = json["tot_sReboundsTotal"];
+    if (!intp(json["tot_sSteals"])) error("Expected integer");
     retval.tot_s_steals = json["tot_sSteals"];
+    if (!intp(json["tot_sThreePointersAttempted"])) error("Expected integer");
     retval.tot_s_three_pointers_attempted = json["tot_sThreePointersAttempted"];
+    if (!intp(json["tot_sThreePointersMade"])) error("Expected integer");
     retval.tot_s_three_pointers_made = json["tot_sThreePointersMade"];
+    if (!intp(json["tot_sThreePointersPercentage"])) error("Expected integer");
     retval.tot_s_three_pointers_percentage = json["tot_sThreePointersPercentage"];
     retval.tot_s_time_leading = (float)json["tot_sTimeLeading"];
+    if (!intp(json["tot_sTimesScoresLevel"])) error("Expected integer");
     retval.tot_s_times_scores_level = json["tot_sTimesScoresLevel"];
+    if (!intp(json["tot_sTurnovers"])) error("Expected integer");
     retval.tot_s_turnovers = json["tot_sTurnovers"];
+    if (!intp(json["tot_sTurnoversTeam"])) error("Expected integer");
     retval.tot_s_turnovers_team = json["tot_sTurnoversTeam"];
+    if (!intp(json["tot_sTwoPointersAttempted"])) error("Expected integer");
     retval.tot_s_two_pointers_attempted = json["tot_sTwoPointersAttempted"];
+    if (!intp(json["tot_sTwoPointersMade"])) error("Expected integer");
     retval.tot_s_two_pointers_made = json["tot_sTwoPointersMade"];
+    if (!intp(json["tot_sTwoPointersPercentage"])) error("Expected integer");
     retval.tot_s_two_pointers_percentage = json["tot_sTwoPointersPercentage"];
 
     return retval;
@@ -844,16 +918,22 @@ class Pl {
 Pl Pl_from_JSON(mixed json) {
     Pl retval = Pl();
 
+    if (!intp(json["active"])) error("Expected integer");
     retval.active = json["active"];
     retval.captain = json["captain"];
     if (has_index(json, "comp") && json["comp"] != Val.null) Comp_from_JSON(json["comp"]);
     retval.comp = json["comp"];
+    if (!intp(json["eff_1"])) error("Expected integer");
     retval.eff_1 = json["eff_1"];
+    if (!intp(json["eff_2"])) error("Expected integer");
     retval.eff_2 = json["eff_2"];
     retval.eff_3 = (float)json["eff_3"];
     retval.eff_4 = (float)json["eff_4"];
+    if (!intp(json["eff_5"])) error("Expected integer");
     retval.eff_5 = json["eff_5"];
+    if (!intp(json["eff_6"])) error("Expected integer");
     retval.eff_6 = json["eff_6"];
+    if (!intp(json["eff_7"])) error("Expected integer");
     retval.eff_7 = json["eff_7"];
     retval.family_name = json["familyName"];
     retval.family_name_initial = FamilyNameInitial_from_JSON(json["familyNameInitial"]);
@@ -865,36 +945,64 @@ Pl Pl_from_JSON(mixed json) {
     retval.international_first_name_initial = FirstNameInitial_from_JSON(json["internationalFirstNameInitial"]);
     retval.name = json["name"];
     retval.playing_position = json["playingPosition"];
+    if (!intp(json["sAssists"])) error("Expected integer");
     retval.s_assists = json["sAssists"];
+    if (!intp(json["sBlocks"])) error("Expected integer");
     retval.s_blocks = json["sBlocks"];
+    if (!intp(json["sBlocksReceived"])) error("Expected integer");
     retval.s_blocks_received = json["sBlocksReceived"];
+    if (!intp(json["sFieldGoalsAttempted"])) error("Expected integer");
     retval.s_field_goals_attempted = json["sFieldGoalsAttempted"];
+    if (!intp(json["sFieldGoalsMade"])) error("Expected integer");
     retval.s_field_goals_made = json["sFieldGoalsMade"];
+    if (!intp(json["sFieldGoalsPercentage"])) error("Expected integer");
     retval.s_field_goals_percentage = json["sFieldGoalsPercentage"];
+    if (!intp(json["sFoulsOn"])) error("Expected integer");
     retval.s_fouls_on = json["sFoulsOn"];
+    if (!intp(json["sFoulsPersonal"])) error("Expected integer");
     retval.s_fouls_personal = json["sFoulsPersonal"];
+    if (!intp(json["sFreeThrowsAttempted"])) error("Expected integer");
     retval.s_free_throws_attempted = json["sFreeThrowsAttempted"];
+    if (!intp(json["sFreeThrowsMade"])) error("Expected integer");
     retval.s_free_throws_made = json["sFreeThrowsMade"];
+    if (!intp(json["sFreeThrowsPercentage"])) error("Expected integer");
     retval.s_free_throws_percentage = json["sFreeThrowsPercentage"];
     if (arrayp(json["sMinutes"])) error("Unexpected array");
     retval.s_minutes = json["sMinutes"];
+    if (!intp(json["sPlusMinusPoints"])) error("Expected integer");
     retval.s_plus_minus_points = json["sPlusMinusPoints"];
+    if (!intp(json["sPoints"])) error("Expected integer");
     retval.s_points = json["sPoints"];
+    if (!intp(json["sPointsFastBreak"])) error("Expected integer");
     retval.s_points_fast_break = json["sPointsFastBreak"];
+    if (!intp(json["sPointsInThePaint"])) error("Expected integer");
     retval.s_points_in_the_paint = json["sPointsInThePaint"];
+    if (!intp(json["sPointsSecondChance"])) error("Expected integer");
     retval.s_points_second_chance = json["sPointsSecondChance"];
+    if (!intp(json["sReboundsDefensive"])) error("Expected integer");
     retval.s_rebounds_defensive = json["sReboundsDefensive"];
+    if (!intp(json["sReboundsOffensive"])) error("Expected integer");
     retval.s_rebounds_offensive = json["sReboundsOffensive"];
+    if (!intp(json["sReboundsTotal"])) error("Expected integer");
     retval.s_rebounds_total = json["sReboundsTotal"];
+    if (!intp(json["sSteals"])) error("Expected integer");
     retval.s_steals = json["sSteals"];
+    if (!intp(json["sThreePointersAttempted"])) error("Expected integer");
     retval.s_three_pointers_attempted = json["sThreePointersAttempted"];
+    if (!intp(json["sThreePointersMade"])) error("Expected integer");
     retval.s_three_pointers_made = json["sThreePointersMade"];
+    if (!intp(json["sThreePointersPercentage"])) error("Expected integer");
     retval.s_three_pointers_percentage = json["sThreePointersPercentage"];
+    if (!intp(json["sTurnovers"])) error("Expected integer");
     retval.s_turnovers = json["sTurnovers"];
+    if (!intp(json["sTwoPointersAttempted"])) error("Expected integer");
     retval.s_two_pointers_attempted = json["sTwoPointersAttempted"];
+    if (!intp(json["sTwoPointersMade"])) error("Expected integer");
     retval.s_two_pointers_made = json["sTwoPointersMade"];
+    if (!intp(json["sTwoPointersPercentage"])) error("Expected integer");
     retval.s_two_pointers_percentage = json["sTwoPointersPercentage"];
     retval.shirt_number = json["shirtNumber"];
+    if (!intp(json["starter"])) error("Expected integer");
     retval.starter = json["starter"];
 
     return retval;
@@ -973,16 +1081,23 @@ Shot Shot_from_JSON(mixed json) {
     Shot retval = Shot();
 
     retval.action_type = ActionType_from_JSON(json["actionType"]);
+    if (!intp(json["p"])) error("Expected integer");
     retval.p = json["p"];
+    if (!intp(json["per"])) error("Expected integer");
     retval.per = json["per"];
     retval.per_type = PerType_from_JSON(json["perType"]);
     retval.player = json["player"];
+    if (!intp(json["pno"])) error("Expected integer");
     retval.pno = json["pno"];
+    if (!intp(json["r"])) error("Expected integer");
     retval.r = json["r"];
     retval.shirt_number = json["shirtNumber"];
     retval.sub_type = SubType_from_JSON(json["subType"]);
+    if (!intp(json["tno"])) error("Expected integer");
     retval.tno = json["tno"];
+    if (!intp(json["x"])) error("Expected integer");
     retval.x = json["x"];
+    if (!intp(json["y"])) error("Expected integer");
     retval.y = json["y"];
 
     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 f0455d3..a5aabe5 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
@@ -306,6 +306,7 @@ TopLevel TopLevel_from_JSON(mixed 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"];
+    if (!intp(json["y_structure_lonely_int.json"])) error("Expected integer");
     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"];
@@ -377,6 +378,7 @@ class YObjectEmptyKeyJson {
 YObjectEmptyKeyJson YObjectEmptyKeyJson_from_JSON(mixed json) {
     YObjectEmptyKeyJson retval = YObjectEmptyKeyJson();
 
+    if (!intp(json[""])) error("Expected integer");
     retval.empty = json[""];
 
     return retval;
@@ -397,6 +399,7 @@ class YObjectEscapedNullInKeyJson {
 YObjectEscapedNullInKeyJson YObjectEscapedNullInKeyJson_from_JSON(mixed json) {
     YObjectEscapedNullInKeyJson retval = YObjectEscapedNullInKeyJson();
 
+    if (!intp(json["foo\u0000bar"])) error("Expected integer");
     retval.foo_bar = json["foo\u0000bar"];
 
     return retval;
diff --git a/base/pike/test/inputs/json/priority/omit-empty.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/omit-empty.json/default/TopLevel.pmod
index ea06266..ee6e5ec 100644
--- a/base/pike/test/inputs/json/priority/omit-empty.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/omit-empty.json/default/TopLevel.pmod
@@ -49,6 +49,7 @@ class Result {
 Result Result_from_JSON(mixed json) {
     Result retval = Result();
 
+    if (!intp(json["age"])) error("Expected integer");
     retval.age = json["age"];
     retval.name = json["name"];
 
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 116ef6a..ec14972 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
@@ -37,6 +37,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
 
     if (json["boolean"] != Standards.JSON.true && json["boolean"] != Standards.JSON.false) error("Expected bool");
     retval.boolean = json["boolean"];
+    if (!intp(json["integer"])) error("Expected integer");
     retval.integer = json["integer"];
     retval.integers = json["integers"];
     retval.number = (float)json["number"];
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 c1a918d..afb8ddd 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,13 +50,18 @@ TopLevel TopLevel_from_JSON(mixed json) {
     Details_from_JSON(json["details"]);
     retval.details = json["details"];
     retval.match = json["match"];
+    if (!intp(json["page"])) error("Expected integer");
     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"];
+    if (!intp(json["totallooseoffers"])) error("Expected integer");
     retval.totallooseoffers = json["totallooseoffers"];
+    if (!intp(json["totalpages"])) error("Expected integer");
     retval.totalpages = json["totalpages"];
+    if (!intp(json["totalresultsavailable"])) error("Expected integer");
     retval.totalresultsavailable = json["totalresultsavailable"];
+    if (!intp(json["totalresultsreturned"])) error("Expected integer");
     retval.totalresultsreturned = json["totalresultsreturned"];
 
     return retval;
@@ -95,11 +100,13 @@ Category Category_from_JSON(mixed json) {
     retval.concatenatecategoryname = json["concatenatecategoryname"];
     if (json["hasoffer"] != Standards.JSON.true && json["hasoffer"] != Standards.JSON.false) error("Expected bool");
     retval.hasoffer = json["hasoffer"];
+    if (!intp(json["id"])) error("Expected integer");
     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"];
+    if (!intp(json["parentcategoryid"])) error("Expected integer");
     retval.parentcategoryid = json["parentcategoryid"];
     CategoryThumbnail_from_JSON(json["thumbnail"]);
     retval.thumbnail = json["thumbnail"];
@@ -200,9 +207,11 @@ Details Details_from_JSON(mixed json) {
 
     retval.applicationid = json["applicationid"];
     retval.applicationversion = json["applicationversion"];
+    if (!intp(json["code"])) error("Expected integer");
     retval.code = json["code"];
     Date_from_JSON(json["date"]);
     retval.date = json["date"];
+    if (!intp(json["elapsedtime"])) error("Expected integer");
     retval.elapsedtime = json["elapsedtime"];
     retval.message = json["message"];
     retval.status = json["status"];
@@ -245,19 +254,27 @@ class Date {
 Date Date_from_JSON(mixed json) {
     Date retval = Date();
 
+    if (!intp(json["day"])) error("Expected integer");
     retval.day = json["day"];
     Eonandyear_from_JSON(json["eonandyear"]);
     retval.eonandyear = json["eonandyear"];
+    if (!intp(json["hour"])) error("Expected integer");
     retval.hour = json["hour"];
+    if (!intp(json["millisecond"])) error("Expected integer");
     retval.millisecond = json["millisecond"];
+    if (!intp(json["minute"])) error("Expected integer");
     retval.minute = json["minute"];
+    if (!intp(json["month"])) error("Expected integer");
     retval.month = json["month"];
+    if (!intp(json["second"])) error("Expected integer");
     retval.second = json["second"];
+    if (!intp(json["timezone"])) error("Expected integer");
     retval.timezone = json["timezone"];
     if (json["valid"] != Standards.JSON.true && json["valid"] != Standards.JSON.false) error("Expected bool");
     retval.valid = json["valid"];
     Xmlschematype_from_JSON(json["xmlschematype"]);
     retval.xmlschematype = json["xmlschematype"];
+    if (!intp(json["year"])) error("Expected integer");
     retval.year = json["year"];
 
     return retval;
@@ -278,6 +295,7 @@ class Eonandyear {
 Eonandyear Eonandyear_from_JSON(mixed json) {
     Eonandyear retval = Eonandyear();
 
+    if (!intp(json["lowestsetbit"])) error("Expected integer");
     retval.lowestsetbit = json["lowestsetbit"];
 
     return retval;
@@ -375,6 +393,7 @@ class ProductProduct {
 ProductProduct ProductProduct_from_JSON(mixed json) {
     ProductProduct retval = ProductProduct();
 
+    if (!intp(json["categoryid"])) error("Expected integer");
     retval.categoryid = json["categoryid"];
     Currency_from_JSON(json["currency"]);
     retval.currency = json["currency"];
@@ -384,12 +403,15 @@ ProductProduct ProductProduct_from_JSON(mixed json) {
     retval.fulldescription = json["fulldescription"];
     if (json["hasmetasearch"] != Standards.JSON.true && json["hasmetasearch"] != Standards.JSON.false) error("Expected bool");
     retval.hasmetasearch = json["hasmetasearch"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.links = json["links"];
+    if (!intp(json["numoffers"])) error("Expected integer");
     retval.numoffers = json["numoffers"];
     retval.pricemax = json["pricemax"];
     retval.pricemin = json["pricemin"];
     retval.productname = json["productname"];
+    if (!intp(json["quantity"])) error("Expected integer");
     retval.quantity = json["quantity"];
     Rating_from_JSON(json["rating"]);
     retval.rating = json["rating"];
@@ -397,6 +419,7 @@ ProductProduct ProductProduct_from_JSON(mixed json) {
     retval.specification = json["specification"];
     FormatsClass_from_JSON(json["thumbnail"]);
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["totalsellers"])) error("Expected integer");
     retval.totalsellers = json["totalsellers"];
 
     return retval;
@@ -463,6 +486,7 @@ Useraveragerating Useraveragerating_from_JSON(mixed json) {
     Useraveragerating retval = Useraveragerating();
 
     retval.links = json["links"];
+    if (!intp(json["numcomments"])) error("Expected integer");
     retval.numcomments = json["numcomments"];
     retval.rating = json["rating"];
 
@@ -532,8 +556,10 @@ FormatsClass FormatsClass_from_JSON(mixed json) {
     FormatsClass retval = FormatsClass();
 
     retval.formats = json["formats"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     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 3449cbd..f206d9d 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
@@ -40,6 +40,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     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"];
+    if (!intp(json["intValue"])) error("Expected integer");
     retval.int_value = json["intValue"];
     retval.string_value = json["stringValue"];
     retval.uuid_value = json["uuidValue"];
diff --git a/base/pike/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.pmod
index e52dbe2..0a66795 100644
--- a/base/pike/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/bitcoin-block.json/default/TopLevel.pmod
@@ -35,9 +35,12 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["block_index"])) error("Expected integer");
     retval.block_index = json["block_index"];
     retval.hash = json["hash"];
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
+    if (!intp(json["time"])) error("Expected integer");
     retval.time = json["time"];
     retval.tx_indexes = json["txIndexes"];
 
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 93fa66f..062d32c 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
@@ -92,6 +92,7 @@ Actor Actor_from_JSON(mixed json) {
     retval.avatar_url = json["avatar_url"];
     retval.display_login = json["display_login"];
     retval.gravatar_id = json["gravatar_id"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.login = json["login"];
     retval.url = json["url"];
@@ -199,6 +200,7 @@ Comment Comment_from_JSON(mixed json) {
     retval.body = json["body"];
     retval.created_at = json["created_at"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.issue_url = json["issue_url"];
     retval.updated_at = json["updated_at"];
@@ -263,6 +265,7 @@ User User_from_JSON(mixed json) {
     retval.gists_url = json["gists_url"];
     retval.gravatar_id = json["gravatar_id"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.login = json["login"];
     retval.organizations_url = json["organizations_url"];
@@ -406,11 +409,13 @@ Issue Issue_from_JSON(mixed json) {
     retval.body = json["body"];
     if (!has_index(json, "closed_at")) error("Missing required property");
     retval.closed_at = json["closed_at"];
+    if (!intp(json["comments"])) error("Expected integer");
     retval.comments = json["comments"];
     retval.comments_url = json["comments_url"];
     retval.created_at = json["created_at"];
     retval.events_url = json["events_url"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.labels = json["labels"];
     retval.labels_url = json["labels_url"];
@@ -419,6 +424,7 @@ Issue Issue_from_JSON(mixed json) {
     if (!has_index(json, "milestone")) error("Missing required property");
     if (has_index(json, "milestone") && json["milestone"] != Val.null) Milestone_from_JSON(json["milestone"]);
     retval.milestone = json["milestone"];
+    if (!intp(json["number"])) error("Expected integer");
     retval.number = json["number"];
     if (has_index(json, "pull_request") && json["pull_request"] != Val.null) IssuePullRequest_from_JSON(json["pull_request"]);
     retval.pull_request = json["pull_request"];
@@ -457,6 +463,7 @@ Label Label_from_JSON(mixed json) {
     Label retval = Label();
 
     retval.color = json["color"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     if (json["default"] != Standards.JSON.true && json["default"] != Standards.JSON.false) error("Expected bool");
     retval.label_default = json["default"];
@@ -510,6 +517,7 @@ Milestone Milestone_from_JSON(mixed json) {
     Milestone retval = Milestone();
 
     retval.closed_at = json["closed_at"];
+    if (!intp(json["closed_issues"])) error("Expected integer");
     retval.closed_issues = json["closed_issues"];
     retval.created_at = json["created_at"];
     User_from_JSON(json["creator"]);
@@ -518,9 +526,12 @@ Milestone Milestone_from_JSON(mixed json) {
     if (!has_index(json, "due_on")) error("Missing required property");
     retval.due_on = json["due_on"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.labels_url = json["labels_url"];
+    if (!intp(json["number"])) error("Expected integer");
     retval.number = json["number"];
+    if (!intp(json["open_issues"])) error("Expected integer");
     retval.open_issues = json["open_issues"];
     retval.state = json["state"];
     retval.title = json["title"];
@@ -654,24 +665,30 @@ class PayloadPullRequest {
 PayloadPullRequest PayloadPullRequest_from_JSON(mixed json) {
     PayloadPullRequest retval = PayloadPullRequest();
 
+    if (!intp(json["additions"])) error("Expected integer");
     retval.additions = json["additions"];
     retval.assignee = json["assignee"];
     retval.assignees = json["assignees"];
     Base_from_JSON(json["base"]);
     retval.base = json["base"];
     retval.body = json["body"];
+    if (!intp(json["changed_files"])) error("Expected integer");
     retval.changed_files = json["changed_files"];
     retval.closed_at = json["closed_at"];
+    if (!intp(json["comments"])) error("Expected integer");
     retval.comments = json["comments"];
     retval.comments_url = json["comments_url"];
+    if (!intp(json["commits"])) error("Expected integer");
     retval.commits = json["commits"];
     retval.commits_url = json["commits_url"];
     retval.created_at = json["created_at"];
+    if (!intp(json["deletions"])) error("Expected integer");
     retval.deletions = json["deletions"];
     retval.diff_url = json["diff_url"];
     Base_from_JSON(json["head"]);
     retval.head = json["head"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.issue_url = json["issue_url"];
     Links_from_JSON(json["_links"]);
@@ -689,11 +706,13 @@ PayloadPullRequest PayloadPullRequest_from_JSON(mixed json) {
     User_from_JSON(json["merged_by"]);
     retval.merged_by = json["merged_by"];
     retval.milestone = json["milestone"];
+    if (!intp(json["number"])) error("Expected integer");
     retval.number = json["number"];
     retval.patch_url = json["patch_url"];
     retval.rebaseable = json["rebaseable"];
     retval.requested_reviewers = json["requested_reviewers"];
     retval.review_comment_url = json["review_comment_url"];
+    if (!intp(json["review_comments"])) error("Expected integer");
     retval.review_comments = json["review_comments"];
     retval.review_comments_url = json["review_comments_url"];
     retval.state = json["state"];
@@ -911,7 +930,9 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.events_url = json["events_url"];
     if (json["fork"] != Standards.JSON.true && json["fork"] != Standards.JSON.false) error("Expected bool");
     retval.fork = json["fork"];
+    if (!intp(json["forks"])) error("Expected integer");
     retval.forks = json["forks"];
+    if (!intp(json["forks_count"])) error("Expected integer");
     retval.forks_count = json["forks_count"];
     retval.forks_url = json["forks_url"];
     retval.full_name = json["full_name"];
@@ -932,6 +953,7 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.homepage = json["homepage"];
     retval.hooks_url = json["hooks_url"];
     retval.html_url = json["html_url"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.issue_comment_url = json["issue_comment_url"];
     retval.issue_events_url = json["issue_events_url"];
@@ -945,7 +967,9 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.mirror_url = json["mirror_url"];
     retval.name = json["name"];
     retval.notifications_url = json["notifications_url"];
+    if (!intp(json["open_issues"])) error("Expected integer");
     retval.open_issues = json["open_issues"];
+    if (!intp(json["open_issues_count"])) error("Expected integer");
     retval.open_issues_count = json["open_issues_count"];
     User_from_JSON(json["owner"]);
     retval.owner = json["owner"];
@@ -954,8 +978,10 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     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"];
+    if (!intp(json["size"])) error("Expected integer");
     retval.size = json["size"];
     retval.ssh_url = json["ssh_url"];
+    if (!intp(json["stargazers_count"])) error("Expected integer");
     retval.stargazers_count = json["stargazers_count"];
     retval.stargazers_url = json["stargazers_url"];
     retval.statuses_url = json["statuses_url"];
@@ -967,7 +993,9 @@ BaseRepo BaseRepo_from_JSON(mixed json) {
     retval.trees_url = json["trees_url"];
     retval.updated_at = json["updated_at"];
     retval.url = json["url"];
+    if (!intp(json["watchers"])) error("Expected integer");
     retval.watchers = json["watchers"];
+    if (!intp(json["watchers_count"])) error("Expected integer");
     retval.watchers_count = json["watchers_count"];
 
     return retval;
@@ -1061,6 +1089,7 @@ class TopLevelRepo {
 TopLevelRepo TopLevelRepo_from_JSON(mixed json) {
     TopLevelRepo retval = TopLevelRepo();
 
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.name = json["name"];
     retval.url = json["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 dc17f04..9aa3281 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
@@ -58,6 +58,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.date_value = json["dateValue"];
     retval.different_things = json["differentThings"];
     retval.double_value = (float)json["doubleValue"];
+    if (!intp(json["intValue"])) error("Expected integer");
     retval.int_value = json["intValue"];
     foreach (json["mapValue"]; mixed _; mixed value) if (stringp(value)) error("Unexpected string");
     retval.map_value = json["mapValue"];
@@ -151,6 +152,7 @@ class PurplePerson {
 PurplePerson PurplePerson_from_JSON(mixed json) {
     PurplePerson retval = PurplePerson();
 
+    if (!intp(json["intOrString"])) error("Expected integer");
     retval.int_or_string = json["intOrString"];
     retval.name = json["name"];
 
diff --git a/base/pike/test/inputs/json/samples/null-safe.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/null-safe.json/default/TopLevel.pmod
index e2b2c36..01384fc 100644
--- a/base/pike/test/inputs/json/samples/null-safe.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/null-safe.json/default/TopLevel.pmod
@@ -57,6 +57,7 @@ Item Item_from_JSON(mixed json) {
     retval.address = json["address"];
     retval.created_at = json["created_at"];
     retval.name = json["name"];
+    if (!intp(json["sex"])) error("Expected integer");
     if (!has_index(json, "sex")) error("Missing required property");
     retval.sex = json["sex"];
 
diff --git a/base/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod
index a1d5293..e03d0c5 100644
--- a/base/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/pokedex.json/default/TopLevel.pmod
@@ -84,6 +84,7 @@ Pokemon Pokemon_from_JSON(mixed json) {
     retval.candy_count = json["candy_count"];
     retval.egg = Egg_from_JSON(json["egg"]);
     retval.height = json["height"];
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
     retval.img = json["img"];
     if (!has_index(json, "multipliers")) error("Missing required property");
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 279cefc..10cf4a6 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
@@ -255,14 +255,18 @@ ChildData ChildData_from_JSON(mixed json) {
     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"];
+    if (!intp(json["created"])) error("Expected integer");
     retval.created = json["created"];
+    if (!intp(json["created_utc"])) error("Expected integer");
     retval.created_utc = json["created_utc"];
     if (!has_index(json, "distinguished")) error("Missing required property");
     retval.distinguished = json["distinguished"];
     retval.domain = Domain_from_JSON(json["domain"]);
+    if (!intp(json["downs"])) error("Expected integer");
     retval.downs = json["downs"];
     if (json["edited"] != Standards.JSON.true && json["edited"] != Standards.JSON.false) error("Expected bool");
     retval.edited = json["edited"];
+    if (!intp(json["gilded"])) error("Expected integer");
     retval.gilded = json["gilded"];
     if (json["hidden"] != Standards.JSON.true && json["hidden"] != Standards.JSON.false) error("Expected bool");
     retval.hidden = json["hidden"];
@@ -285,6 +289,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.media_embed = json["media_embed"];
     retval.mod_reports = json["mod_reports"];
     retval.name = json["name"];
+    if (!intp(json["num_comments"])) error("Expected integer");
     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");
@@ -300,6 +305,7 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.report_reasons = json["report_reasons"];
     if (json["saved"] != Standards.JSON.true && json["saved"] != Standards.JSON.false) error("Expected bool");
     retval.saved = json["saved"];
+    if (!intp(json["score"])) error("Expected integer");
     retval.score = json["score"];
     retval.secure_media = json["secure_media"];
     MediaEmbed_from_JSON(json["secure_media_embed"]);
@@ -316,9 +322,12 @@ ChildData ChildData_from_JSON(mixed json) {
     retval.subreddit_type = SubredditType_from_JSON(json["subreddit_type"]);
     retval.suggested_sort = json["suggested_sort"];
     retval.thumbnail = json["thumbnail"];
+    if (!intp(json["thumbnail_height"])) error("Expected integer");
     retval.thumbnail_height = json["thumbnail_height"];
+    if (!intp(json["thumbnail_width"])) error("Expected integer");
     retval.thumbnail_width = json["thumbnail_width"];
     retval.title = json["title"];
+    if (!intp(json["ups"])) error("Expected integer");
     retval.ups = json["ups"];
     retval.url = json["url"];
     retval.user_reports = json["user_reports"];
@@ -448,8 +457,10 @@ class Source {
 Source Source_from_JSON(mixed json) {
     Source retval = Source();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
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 102351c..b576837 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
@@ -31,6 +31,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["date"])) error("Expected integer");
     retval.date = json["date"];
     retval.title = json["title"];
     if (json["validity"] != Standards.JSON.true && json["validity"] != Standards.JSON.false) error("Expected bool");
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 cac2702..c335823 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
@@ -72,6 +72,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.id = json["id"];
     retval.images = json["images"];
     retval.name = json["name"];
+    if (!intp(json["popularity"])) error("Expected integer");
     retval.popularity = json["popularity"];
     retval.release_date = json["release_date"];
     retval.release_date_precision = json["release_date_precision"];
@@ -201,8 +202,10 @@ class Image {
 Image Image_from_JSON(mixed json) {
     Image retval = Image();
 
+    if (!intp(json["height"])) error("Expected integer");
     retval.height = json["height"];
     retval.url = json["url"];
+    if (!intp(json["width"])) error("Expected integer");
     retval.width = json["width"];
 
     return retval;
@@ -237,10 +240,13 @@ Tracks Tracks_from_JSON(mixed json) {
 
     retval.href = json["href"];
     retval.items = json["items"];
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
     retval.next = json["next"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
     retval.previous = json["previous"];
+    if (!intp(json["total"])) error("Expected integer");
     retval.total = json["total"];
 
     return retval;
@@ -287,7 +293,9 @@ Item Item_from_JSON(mixed json) {
 
     retval.artists = json["artists"];
     retval.available_markets = json["available_markets"];
+    if (!intp(json["disc_number"])) error("Expected integer");
     retval.disc_number = json["disc_number"];
+    if (!intp(json["duration_ms"])) error("Expected integer");
     retval.duration_ms = json["duration_ms"];
     if (json["explicit"] != Standards.JSON.true && json["explicit"] != Standards.JSON.false) error("Expected bool");
     retval.explicit = json["explicit"];
@@ -297,6 +305,7 @@ Item Item_from_JSON(mixed json) {
     retval.id = json["id"];
     retval.name = json["name"];
     retval.preview_url = json["preview_url"];
+    if (!intp(json["track_number"])) error("Expected integer");
     retval.track_number = json["track_number"];
     retval.type = json["type"];
     retval.uri = json["uri"];
diff --git a/base/pike/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.pmod b/head/pike/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.pmod
index 443e385..e62ed35 100644
--- a/base/pike/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/samples/us-avg-temperatures.json/default/TopLevel.pmod
@@ -81,6 +81,7 @@ Description Description_from_JSON(mixed json) {
     Description retval = Description();
 
     retval.base_period = json["base_period"];
+    if (!intp(json["missing"])) error("Expected integer");
     retval.missing = json["missing"];
     retval.title = json["title"];
     retval.units = json["units"];
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 35d5d21..3130486 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
@@ -55,8 +55,11 @@ class Meta {
 Meta Meta_from_JSON(mixed json) {
     Meta retval = Meta();
 
+    if (!intp(json["limit"])) error("Expected integer");
     retval.limit = json["limit"];
+    if (!intp(json["offset"])) error("Expected integer");
     retval.offset = json["offset"];
+    if (!intp(json["total_count"])) error("Expected integer");
     retval.total_count = json["total_count"];
 
     return retval;
@@ -241,6 +244,7 @@ Person Person_from_JSON(mixed json) {
 
     retval.bioguideid = json["bioguideid"];
     retval.birthday = json["birthday"];
+    if (!intp(json["cspanid"])) error("Expected integer");
     retval.cspanid = json["cspanid"];
     retval.firstname = json["firstname"];
     retval.gender = Gender_from_JSON(json["gender"]);
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 674fb07..8b848d0 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
@@ -35,6 +35,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["amount"])) error("Expected integer");
     retval.amount = json["amount"];
     if (json["enabled"] != Standards.JSON.true && json["enabled"] != Standards.JSON.false) error("Expected bool");
     retval.enabled = json["enabled"];
diff --git a/base/schema-pike/test/inputs/schema/cut-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/cut-enum.schema/default/TopLevel.pmod
index 20adf0e..5a7ae3f 100644
--- a/base/schema-pike/test/inputs/schema/cut-enum.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/cut-enum.schema/default/TopLevel.pmod
@@ -27,6 +27,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
 
     return retval;
diff --git a/base/schema-pike/test/inputs/schema/default-value.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/default-value.schema/default/TopLevel.pmod
index b0a87f4..ed746dc 100644
--- a/base/schema-pike/test/inputs/schema/default-value.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/default-value.schema/default/TopLevel.pmod
@@ -28,6 +28,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["id"])) error("Expected integer");
     retval.id = json["id"];
 
     return retval;
diff --git a/base/schema-pike/test/inputs/schema/id-no-address.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/id-no-address.schema/default/TopLevel.pmod
index 8f9d3f2..808974e 100644
--- a/base/schema-pike/test/inputs/schema/id-no-address.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/id-no-address.schema/default/TopLevel.pmod
@@ -27,6 +27,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["item"])) error("Expected integer");
     retval.item = json["item"];
 
     return retval;
diff --git a/base/schema-pike/test/inputs/schema/id-root.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/id-root.schema/default/TopLevel.pmod
index 32ddf7a..03c5fdf 100644
--- a/base/schema-pike/test/inputs/schema/id-root.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/id-root.schema/default/TopLevel.pmod
@@ -27,6 +27,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["bar"])) error("Expected integer");
     retval.bar = json["bar"];
 
     return retval;
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 a3f4cfe..f209742 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
@@ -31,6 +31,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
     if (json["bar"] != Standards.JSON.true && json["bar"] != Standards.JSON.false) error("Expected bool");
     retval.bar = json["bar"];
diff --git a/base/schema-pike/test/inputs/schema/implicit-one-of.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/implicit-one-of.schema/default/TopLevel.pmod
index 1e7a0f4..01a276a 100644
--- a/base/schema-pike/test/inputs/schema/implicit-one-of.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/implicit-one-of.schema/default/TopLevel.pmod
@@ -31,6 +31,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
     retval.bar = json["bar"];
     retval.quux = json["quux"];
diff --git a/base/schema-pike/test/inputs/schema/integer-type.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/integer-type.schema/default/TopLevel.pmod
index ba7efc7..2dfa063 100644
--- a/base/schema-pike/test/inputs/schema/integer-type.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/integer-type.schema/default/TopLevel.pmod
@@ -45,26 +45,35 @@ TopLevel TopLevel_from_JSON(mixed json) {
 
     if (json["above_i32_max"] < 0) error("Value below minimum");
     if (json["above_i32_max"] > 2147483648) error("Value above maximum");
+    if (!intp(json["above_i32_max"])) error("Expected integer");
     retval.above_i32_max = json["above_i32_max"];
     if (json["below_i32_min"] < -2147483649) error("Value below minimum");
     if (json["below_i32_min"] > 0) error("Value above maximum");
+    if (!intp(json["below_i32_min"])) error("Expected integer");
     retval.below_i32_min = json["below_i32_min"];
     if (json["i32_range"] < -2147483648) error("Value below minimum");
     if (json["i32_range"] > 2147483647) error("Value above maximum");
+    if (!intp(json["i32_range"])) error("Expected integer");
     retval.i32_range = json["i32_range"];
     if (json["large_bounds"] < -9007199254740991) error("Value below minimum");
     if (json["large_bounds"] > 9007199254740991) error("Value above maximum");
+    if (!intp(json["large_bounds"])) error("Expected integer");
     retval.large_bounds = json["large_bounds"];
     if (json["only_maximum"] > 0) error("Value above maximum");
+    if (!intp(json["only_maximum"])) error("Expected integer");
     retval.only_maximum = json["only_maximum"];
     if (json["only_minimum"] < 0) error("Value below minimum");
+    if (!intp(json["only_minimum"])) error("Expected integer");
     retval.only_minimum = json["only_minimum"];
     if (json["small_negative"] < -100) error("Value below minimum");
     if (json["small_negative"] > 0) error("Value above maximum");
+    if (!intp(json["small_negative"])) error("Expected integer");
     retval.small_negative = json["small_negative"];
     if (json["small_positive"] < 0) error("Value below minimum");
     if (json["small_positive"] > 100) error("Value above maximum");
+    if (!intp(json["small_positive"])) error("Expected integer");
     retval.small_positive = json["small_positive"];
+    if (!intp(json["unbounded"])) error("Expected integer");
     retval.unbounded = json["unbounded"];
 
     return retval;
diff --git a/base/schema-pike/test/inputs/schema/minmax-integer.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/minmax-integer.schema/default/TopLevel.pmod
index 7eca078..d654109 100644
--- a/base/schema-pike/test/inputs/schema/minmax-integer.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/minmax-integer.schema/default/TopLevel.pmod
@@ -41,23 +41,31 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["free"])) error("Expected integer");
     retval.free = json["free"];
     if (json["intersection"] < 4) error("Value below minimum");
     if (json["intersection"] > 5) error("Value above maximum");
+    if (!intp(json["intersection"])) error("Expected integer");
     retval.intersection = json["intersection"];
     if (json["max"] > 5) error("Value above maximum");
+    if (!intp(json["max"])) error("Expected integer");
     retval.max = json["max"];
     if (json["min"] < 3) error("Value below minimum");
+    if (!intp(json["min"])) error("Expected integer");
     retval.min = json["min"];
     if (json["minmax"] < 3) error("Value below minimum");
     if (json["minmax"] > 5) error("Value above maximum");
+    if (!intp(json["minmax"])) error("Expected integer");
     retval.minmax = json["minmax"];
     if (json["minMaxIntersection"] < 3) error("Value below minimum");
     if (json["minMaxIntersection"] > 5) error("Value above maximum");
+    if (!intp(json["minMaxIntersection"])) error("Expected integer");
     retval.min_max_intersection = json["minMaxIntersection"];
+    if (!intp(json["minMaxUnion"])) error("Expected integer");
     retval.min_max_union = json["minMaxUnion"];
     if (json["union"] < 3) error("Value below minimum");
     if (json["union"] > 6) error("Value above maximum");
+    if (!intp(json["union"])) error("Expected integer");
     retval.union = json["union"];
 
     return retval;
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 c467a3b..4d947c3 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
@@ -31,7 +31,9 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["bar"])) error("Expected integer");
     retval.bar = json["bar"];
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
     if (json["quux"] != Standards.JSON.true && json["quux"] != Standards.JSON.false) error("Expected bool");
     retval.quux = json["quux"];
diff --git a/base/schema-pike/test/inputs/schema/optional-const-ref.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/optional-const-ref.schema/default/TopLevel.pmod
index 3102527..13f445e 100644
--- a/base/schema-pike/test/inputs/schema/optional-const-ref.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/optional-const-ref.schema/default/TopLevel.pmod
@@ -49,6 +49,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.required_coordinates = json["requiredCoordinates"];
     if (json["requiredCount"] < 1) error("Value below minimum");
     if (json["requiredCount"] > 100) error("Value above maximum");
+    if (!intp(json["requiredCount"])) error("Expected integer");
     retval.required_count = json["requiredCount"];
     if (sizeof(json["requiredLabel"]) < 2) error("String too short");
     if (sizeof(json["requiredLabel"]) > 16) error("String too long");
diff --git a/base/schema-pike/test/inputs/schema/optional-constraints.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/optional-constraints.schema/default/TopLevel.pmod
index c9da774..d6b9a62 100644
--- a/base/schema-pike/test/inputs/schema/optional-constraints.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/optional-constraints.schema/default/TopLevel.pmod
@@ -48,6 +48,7 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.opt_string = json["optString"];
     if (json["reqZeroMin"] < 0) error("Value below minimum");
     if (json["reqZeroMin"] > 100) error("Value above maximum");
+    if (!intp(json["reqZeroMin"])) error("Expected integer");
     retval.req_zero_min = json["reqZeroMin"];
 
     return retval;
diff --git a/base/schema-pike/test/inputs/schema/ref-id-files.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/ref-id-files.schema/default/TopLevel.pmod
index 20adf0e..5a7ae3f 100644
--- a/base/schema-pike/test/inputs/schema/ref-id-files.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/ref-id-files.schema/default/TopLevel.pmod
@@ -27,6 +27,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
 
     return retval;
diff --git a/base/schema-pike/test/inputs/schema/required-non-properties.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/required-non-properties.schema/default/TopLevel.pmod
index 863c71c..077e5e3 100644
--- a/base/schema-pike/test/inputs/schema/required-non-properties.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/required-non-properties.schema/default/TopLevel.pmod
@@ -29,6 +29,7 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    if (!intp(json["foo"])) error("Expected integer");
     retval.foo = json["foo"];
     retval.bar = json["bar"];
 
