diff --git a/base/dart/test/inputs/json/misc/050b0.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/050b0.json/default/TopLevel.dart
index 3beb7f4..ba49aec 100644
--- a/base/dart/test/inputs/json/misc/050b0.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/050b0.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<OtherName>.from(json["other_names"].map((x) => OtherName.fromJson(x))),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
@@ -145,7 +145,7 @@ class OtherName {
 
     factory OtherName.fromJson(Map<String, dynamic> json) => OtherName(
         name: json["name"],
-        note: json["note"],
+        note: (json.containsKey("note") ? json["note"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/06bee.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/06bee.json/default/TopLevel.dart
index de07673..2f01683 100644
--- a/base/dart/test/inputs/json/misc/06bee.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/06bee.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<dynamic>.from(json["other_names"].map((x) => x)),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/07c75.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/07c75.json/default/TopLevel.dart
index 19013c5..171f2bb 100644
--- a/base/dart/test/inputs/json/misc/07c75.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/07c75.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<dynamic>.from(json["other_names"].map((x) => x)),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/0a91a.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/0a91a.json/default/TopLevel.dart
index 2ea24e0..9e427ee 100644
--- a/base/dart/test/inputs/json/misc/0a91a.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/0a91a.json/default/TopLevel.dart
@@ -297,7 +297,7 @@ class PullRequest {
 
     factory PullRequest.fromJson(Map<String, dynamic> json) => PullRequest(
         additions: json["additions"],
-        assignee: json["assignee"],
+        assignee: (json.containsKey("assignee") ? json["assignee"] : throw FormatException('Missing required property')),
         assignees: List<dynamic>.from(json["assignees"].map((x) => x)),
         base: Base.fromJson(json["base"]),
         body: json["body"],
@@ -318,15 +318,15 @@ class PullRequest {
         locked: json["locked"],
         maintainerCanModify: json["maintainer_can_modify"],
         mergeCommitSha: json["merge_commit_sha"],
-        mergeable: json["mergeable"],
+        mergeable: (json.containsKey("mergeable") ? json["mergeable"] : throw FormatException('Missing required property')),
         mergeableState: json["mergeable_state"],
         merged: json["merged"],
         mergedAt: DateTime.parse(json["merged_at"]),
         mergedBy: MergedBy.fromJson(json["merged_by"]),
-        milestone: json["milestone"],
+        milestone: (json.containsKey("milestone") ? json["milestone"] : throw FormatException('Missing required property')),
         number: json["number"],
         patchUrl: json["patch_url"],
-        rebaseable: json["rebaseable"],
+        rebaseable: (json.containsKey("rebaseable") ? json["rebaseable"] : throw FormatException('Missing required property')),
         requestedReviewers: List<dynamic>.from(json["requested_reviewers"].map((x) => x)),
         reviewCommentUrl: json["review_comment_url"],
         reviewComments: json["review_comments"],
@@ -574,7 +574,7 @@ class BaseRepo {
         createdAt: DateTime.parse(json["created_at"]),
         defaultBranch: json["default_branch"],
         deploymentsUrl: json["deployments_url"],
-        description: json["description"],
+        description: (json.containsKey("description") ? json["description"] : throw FormatException('Missing required property')),
         downloadsUrl: json["downloads_url"],
         eventsUrl: json["events_url"],
         fork: json["fork"],
@@ -591,7 +591,7 @@ class BaseRepo {
         hasPages: json["has_pages"],
         hasProjects: json["has_projects"],
         hasWiki: json["has_wiki"],
-        homepage: json["homepage"],
+        homepage: (json.containsKey("homepage") ? json["homepage"] : throw FormatException('Missing required property')),
         hooksUrl: json["hooks_url"],
         htmlUrl: json["html_url"],
         id: json["id"],
@@ -604,7 +604,7 @@ class BaseRepo {
         languagesUrl: json["languages_url"],
         mergesUrl: json["merges_url"],
         milestonesUrl: json["milestones_url"],
-        mirrorUrl: json["mirror_url"],
+        mirrorUrl: (json.containsKey("mirror_url") ? json["mirror_url"] : throw FormatException('Missing required property')),
         name: json["name"],
         notificationsUrl: json["notifications_url"],
         openIssues: json["open_issues"],
diff --git a/base/dart/test/inputs/json/misc/0b91a.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/0b91a.json/default/TopLevel.dart
index 0d4cf21..eba9f87 100644
--- a/base/dart/test/inputs/json/misc/0b91a.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/0b91a.json/default/TopLevel.dart
@@ -137,8 +137,8 @@ class Result {
         created: json["created"],
         date: json["date"],
         image: List<dynamic>.from(json["image"].map((x) => x)),
-        number: json["number"],
-        teaser: json["teaser"],
+        number: (json.containsKey("number") ? json["number"] : throw FormatException('Missing required property')),
+        teaser: (json.containsKey("teaser") ? json["teaser"] : throw FormatException('Missing required property')),
         title: json["title"],
         topic: List<dynamic>.from(json["topic"].map((x) => x)),
         url: json["url"],
diff --git a/base/dart/test/inputs/json/misc/0e0c2.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/0e0c2.json/default/TopLevel.dart
index ed04a63..d4cd93f 100644
--- a/base/dart/test/inputs/json/misc/0e0c2.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/0e0c2.json/default/TopLevel.dart
@@ -24,7 +24,7 @@ class TopLevel {
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         count: json["count"],
         next: json["next"],
-        previous: json["previous"],
+        previous: (json.containsKey("previous") ? json["previous"] : throw FormatException('Missing required property')),
         results: List<Result>.from(json["results"].map((x) => Result.fromJson(x))),
     );
 
@@ -82,7 +82,7 @@ class Result {
         language: resultLanguageValues.map[json["language"]]!,
         releaseDate: DateTime.parse(json["release_date"]),
         stars: json["stars"],
-        tags: json["tags"] == null ? null : List<dynamic>.from(json["tags"]!.map((x) => x)),
+        tags: (json.containsKey("tags") ? json["tags"] : throw FormatException('Missing required property')) == null ? null : List<dynamic>.from((json.containsKey("tags") ? json["tags"] : throw FormatException('Missing required property'))!.map((x) => x)),
         title: json["title"],
         videos: List<Video>.from(json["videos"].map((x) => Video.fromJson(x))),
         voteScore: VoteScore.fromJson(json["vote_score"]),
diff --git a/base/dart/test/inputs/json/misc/10be4.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/10be4.json/default/TopLevel.dart
index 7405e81..4f1ff25 100644
--- a/base/dart/test/inputs/json/misc/10be4.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/10be4.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<OtherName>.from(json["other_names"].map((x) => OtherName.fromJson(x))),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
@@ -163,7 +163,7 @@ class OtherName {
 
     factory OtherName.fromJson(Map<String, dynamic> json) => OtherName(
         name: json["name"],
-        note: json["note"],
+        note: (json.containsKey("note") ? json["note"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/1b409.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/1b409.json/default/TopLevel.dart
index e36f0ee..11a49c7 100644
--- a/base/dart/test/inputs/json/misc/1b409.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/1b409.json/default/TopLevel.dart
@@ -100,7 +100,7 @@ class Object {
     });
 
     factory Object.fromJson(Map<String, dynamic> json) => Object(
-        caucus: json["caucus"],
+        caucus: (json.containsKey("caucus") ? json["caucus"] : throw FormatException('Missing required property')),
         congressNumbers: List<int>.from(json["congress_numbers"].map((x) => x)),
         current: json["current"],
         description: json["description"],
@@ -108,14 +108,14 @@ class Object {
         enddate: DateTime.parse(json["enddate"]),
         extra: Extra.fromJson(json["extra"]),
         id: json["id"],
-        leadershipTitle: json["leadership_title"],
+        leadershipTitle: (json.containsKey("leadership_title") ? json["leadership_title"] : throw FormatException('Missing required property')),
         party: partyValues.map[json["party"]]!,
         person: Person.fromJson(json["person"]),
         phone: json["phone"],
         roleType: roleTypeValues.map[json["role_type"]]!,
         roleTypeLabel: roleTypeLabelValues.map[json["role_type_label"]]!,
-        senatorClass: json["senator_class"],
-        senatorRank: json["senator_rank"],
+        senatorClass: (json.containsKey("senator_class") ? json["senator_class"] : throw FormatException('Missing required property')),
+        senatorRank: (json.containsKey("senator_rank") ? json["senator_rank"] : throw FormatException('Missing required property')),
         startdate: DateTime.parse(json["startdate"]),
         state: json["state"],
         title: titleValues.map[json["title"]]!,
@@ -246,10 +246,10 @@ class Person {
         namemod: namemodValues.map[json["namemod"]]!,
         nickname: json["nickname"],
         osid: json["osid"],
-        pvsid: json["pvsid"],
+        pvsid: (json.containsKey("pvsid") ? json["pvsid"] : throw FormatException('Missing required property')),
         sortname: json["sortname"],
-        twitterid: json["twitterid"],
-        youtubeid: json["youtubeid"],
+        twitterid: (json.containsKey("twitterid") ? json["twitterid"] : throw FormatException('Missing required property')),
+        youtubeid: (json.containsKey("youtubeid") ? json["youtubeid"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/27332.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/27332.json/default/TopLevel.dart
index 9c7781b..1558160 100644
--- a/base/dart/test/inputs/json/misc/27332.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/27332.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -210,14 +210,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -225,7 +225,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: domainValues.map[json["domain"]]!,
         downs: json["downs"],
         edited: json["edited"],
@@ -235,44 +235,44 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"] == null ? null : Media.fromJson(json["media"]),
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("media") ? json["media"] : throw FormatException('Missing required property'))),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         postHint: json["post_hint"] == null ? null : postHintValues.map[json["post_hint"]]!,
         preview: json["preview"] == null ? null : Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"] == null ? null : Media.fromJson(json["secure_media"]),
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property'))),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
-        thumbnailHeight: json["thumbnail_height"],
-        thumbnailWidth: json["thumbnail_width"],
+        thumbnailHeight: (json.containsKey("thumbnail_height") ? json["thumbnail_height"] : throw FormatException('Missing required property')),
+        thumbnailWidth: (json.containsKey("thumbnail_width") ? json["thumbnail_width"] : throw FormatException('Missing required property')),
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/29f47.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/29f47.json/default/TopLevel.dart
index bd7e648..f0ff3bf 100644
--- a/base/dart/test/inputs/json/misc/29f47.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/29f47.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -210,14 +210,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -235,44 +235,44 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"],
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         postHint: json["post_hint"] == null ? null : postHintValues.map[json["post_hint"]]!,
         preview: json["preview"] == null ? null : Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"],
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
-        thumbnailHeight: json["thumbnail_height"],
-        thumbnailWidth: json["thumbnail_width"],
+        thumbnailHeight: (json.containsKey("thumbnail_height") ? json["thumbnail_height"] : throw FormatException('Missing required property')),
+        thumbnailWidth: (json.containsKey("thumbnail_width") ? json["thumbnail_width"] : throw FormatException('Missing required property')),
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/2d4e2.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/2d4e2.json/default/TopLevel.dart
index 7755e37..764956c 100644
--- a/base/dart/test/inputs/json/misc/2d4e2.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/2d4e2.json/default/TopLevel.dart
@@ -104,15 +104,15 @@ class Object {
     });
 
     factory Object.fromJson(Map<String, dynamic> json) => Object(
-        caucus: json["caucus"] == null ? null : partyValues.map[json["caucus"]]!,
+        caucus: (json.containsKey("caucus") ? json["caucus"] : throw FormatException('Missing required property')) == null ? null : partyValues.map[(json.containsKey("caucus") ? json["caucus"] : throw FormatException('Missing required property'))]!,
         congressNumbers: List<int>.from(json["congress_numbers"].map((x) => x)),
         current: json["current"],
         description: json["description"],
-        district: json["district"],
+        district: (json.containsKey("district") ? json["district"] : throw FormatException('Missing required property')),
         enddate: DateTime.parse(json["enddate"]),
         extra: Extra.fromJson(json["extra"]),
         id: json["id"],
-        leadershipTitle: json["leadership_title"],
+        leadershipTitle: (json.containsKey("leadership_title") ? json["leadership_title"] : throw FormatException('Missing required property')),
         party: partyValues.map[json["party"]]!,
         person: Person.fromJson(json["person"]),
         phone: json["phone"],
@@ -258,8 +258,8 @@ class Person {
         osid: json["osid"],
         pvsid: json["pvsid"],
         sortname: json["sortname"],
-        twitterid: json["twitterid"],
-        youtubeid: json["youtubeid"],
+        twitterid: (json.containsKey("twitterid") ? json["twitterid"] : throw FormatException('Missing required property')),
+        youtubeid: (json.containsKey("youtubeid") ? json["youtubeid"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/31189.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/31189.json/default/TopLevel.dart
index 191610e..564942a 100644
--- a/base/dart/test/inputs/json/misc/31189.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/31189.json/default/TopLevel.dart
@@ -22,7 +22,7 @@ class TopLevel {
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         details: json["details"],
         rates: List<Rate>.from(json["rates"].map((x) => Rate.fromJson(x))),
-        version: json["version"],
+        version: (json.containsKey("version") ? json["version"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/32431.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/32431.json/default/TopLevel.dart
index 9d3d6ee..178e116 100644
--- a/base/dart/test/inputs/json/misc/32431.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/32431.json/default/TopLevel.dart
@@ -150,19 +150,19 @@ class Properties {
     });
 
     factory Properties.fromJson(Map<String, dynamic> json) => Properties(
-        alert: json["alert"],
-        cdi: json["cdi"],
+        alert: (json.containsKey("alert") ? json["alert"] : throw FormatException('Missing required property')),
+        cdi: (json.containsKey("cdi") ? json["cdi"] : throw FormatException('Missing required property')),
         code: json["code"],
         detail: json["detail"],
-        dmin: json["dmin"]?.toDouble(),
-        felt: json["felt"],
-        gap: json["gap"],
+        dmin: (json.containsKey("dmin") ? json["dmin"] : throw FormatException('Missing required property'))?.toDouble(),
+        felt: (json.containsKey("felt") ? json["felt"] : throw FormatException('Missing required property')),
+        gap: (json.containsKey("gap") ? json["gap"] : throw FormatException('Missing required property')),
         ids: json["ids"],
         mag: json["mag"]?.toDouble(),
         magType: magTypeValues.map[json["magType"]]!,
-        mmi: json["mmi"],
+        mmi: (json.containsKey("mmi") ? json["mmi"] : throw FormatException('Missing required property')),
         net: json["net"],
-        nst: json["nst"],
+        nst: (json.containsKey("nst") ? json["nst"] : throw FormatException('Missing required property')),
         place: json["place"],
         rms: json["rms"]?.toDouble(),
         sig: json["sig"],
diff --git a/base/dart/test/inputs/json/misc/32d5c.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/32d5c.json/default/TopLevel.dart
index 102babc..3b72bc7 100644
--- a/base/dart/test/inputs/json/misc/32d5c.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/32d5c.json/default/TopLevel.dart
@@ -30,7 +30,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        birthDate: json["BirthDate"] == null ? null : DateTime.parse(json["BirthDate"]),
+        birthDate: (json.containsKey("BirthDate") ? json["BirthDate"] : throw FormatException('Missing required property')) == null ? null : DateTime.parse((json.containsKey("BirthDate") ? json["BirthDate"] : throw FormatException('Missing required property'))),
         birthDateIsProtected: json["BirthDateIsProtected"],
         genderTypeId: json["GenderTypeID"],
         notes: json["Notes"],
diff --git a/base/dart/test/inputs/json/misc/337ed.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/337ed.json/default/TopLevel.dart
index 7bee3e9..79d45ab 100644
--- a/base/dart/test/inputs/json/misc/337ed.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/337ed.json/default/TopLevel.dart
@@ -128,35 +128,35 @@ class Result {
     });
 
     factory Result.fromJson(Map<String, dynamic> json) => Result(
-        costAbsolute: json["cost_absolute"],
-        costMax: json["cost_max"],
-        costMin: json["cost_min"],
+        costAbsolute: (json.containsKey("cost_absolute") ? json["cost_absolute"] : throw FormatException('Missing required property')),
+        costMax: (json.containsKey("cost_max") ? json["cost_max"] : throw FormatException('Missing required property')),
+        costMin: (json.containsKey("cost_min") ? json["cost_min"] : throw FormatException('Missing required property')),
         createdAt: DateTime.parse(json["created_at"]),
         customIncomes: List<CustomIncome>.from(json["customIncomes"].map((x) => CustomIncome.fromJson(x))),
-        directRepCostsMax: json["direct_rep_costs_max"],
-        directRepCostsMin: json["direct_rep_costs_min"],
+        directRepCostsMax: (json.containsKey("direct_rep_costs_max") ? json["direct_rep_costs_max"] : throw FormatException('Missing required property')),
+        directRepCostsMin: (json.containsKey("direct_rep_costs_min") ? json["direct_rep_costs_min"] : throw FormatException('Missing required property')),
         endDate: DateTime.parse(json["end_date"]),
         eurSourcesGrants: json["eur_sources_grants"],
-        eurSourcesGrantsSrc: json["eur_sources_grants_src"],
+        eurSourcesGrantsSrc: (json.containsKey("eur_sources_grants_src") ? json["eur_sources_grants_src"] : throw FormatException('Missing required property')),
         eurSourcesProcurement: json["eur_sources_procurement"],
-        eurSourcesProcurementSrc: json["eur_sources_procurement_src"],
+        eurSourcesProcurementSrc: (json.containsKey("eur_sources_procurement_src") ? json["eur_sources_procurement_src"] : throw FormatException('Missing required property')),
         id: json["id"],
-        newOrganisation: json["new_organisation"],
-        noClients: json["no_clients"],
-        otherFinancialInformation: json["other_financial_information"],
-        otherSourcesContributions: json["other_sources_contributions"],
-        otherSourcesDonation: json["other_sources_donation"],
-        otherSourcesTotal: json["other_sources_total"],
-        publicFinancingInfranational: json["public_financing_infranational"],
-        publicFinancingNational: json["public_financing_national"],
-        publicFinancingTotal: json["public_financing_total"],
+        newOrganisation: (json.containsKey("new_organisation") ? json["new_organisation"] : throw FormatException('Missing required property')),
+        noClients: (json.containsKey("no_clients") ? json["no_clients"] : throw FormatException('Missing required property')),
+        otherFinancialInformation: (json.containsKey("other_financial_information") ? json["other_financial_information"] : throw FormatException('Missing required property')),
+        otherSourcesContributions: (json.containsKey("other_sources_contributions") ? json["other_sources_contributions"] : throw FormatException('Missing required property')),
+        otherSourcesDonation: (json.containsKey("other_sources_donation") ? json["other_sources_donation"] : throw FormatException('Missing required property')),
+        otherSourcesTotal: (json.containsKey("other_sources_total") ? json["other_sources_total"] : throw FormatException('Missing required property')),
+        publicFinancingInfranational: (json.containsKey("public_financing_infranational") ? json["public_financing_infranational"] : throw FormatException('Missing required property')),
+        publicFinancingNational: (json.containsKey("public_financing_national") ? json["public_financing_national"] : throw FormatException('Missing required property')),
+        publicFinancingTotal: (json.containsKey("public_financing_total") ? json["public_financing_total"] : throw FormatException('Missing required property')),
         representative: json["representative"],
         startDate: DateTime.parse(json["start_date"]),
         status: statusValues.map[json["status"]]!,
-        totalBudget: json["total_budget"],
-        turnoverAbsolute: json["turnover_absolute"],
-        turnoverMax: json["turnover_max"],
-        turnoverMin: json["turnover_min"],
+        totalBudget: (json.containsKey("total_budget") ? json["total_budget"] : throw FormatException('Missing required property')),
+        turnoverAbsolute: (json.containsKey("turnover_absolute") ? json["turnover_absolute"] : throw FormatException('Missing required property')),
+        turnoverMax: (json.containsKey("turnover_max") ? json["turnover_max"] : throw FormatException('Missing required property')),
+        turnoverMin: (json.containsKey("turnover_min") ? json["turnover_min"] : throw FormatException('Missing required property')),
         type: resultTypeValues.map[json["type"]]!,
         updatedAt: DateTime.parse(json["updated_at"]),
         uri: json["uri"],
diff --git a/base/dart/test/inputs/json/misc/34702.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/34702.json/default/TopLevel.dart
index d257a7d..2357423 100644
--- a/base/dart/test/inputs/json/misc/34702.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/34702.json/default/TopLevel.dart
@@ -178,11 +178,11 @@ class FeatureProperties {
     factory FeatureProperties.fromJson(Map<String, dynamic> json) => FeatureProperties(
         division: json["division"],
         fax: json["fax"]?.toDouble(),
-        fireBanR: json["fire_ban_r"] == null ? null : fireBanRValues.map[json["fire_ban_r"]]!,
+        fireBanR: (json.containsKey("fire_ban_r") ? json["fire_ban_r"] : throw FormatException('Missing required property')) == null ? null : fireBanRValues.map[(json.containsKey("fire_ban_r") ? json["fire_ban_r"] : throw FormatException('Missing required property'))]!,
         latitude: json["latitude"]?.toDouble(),
         localGovt: json["local_govt"],
         longitude: json["longitude"]?.toDouble(),
-        no: json["no"],
+        no: (json.containsKey("no") ? json["no"] : throw FormatException('Missing required property')),
         phone: json["phone"]?.toDouble(),
         postcode: json["postcode"],
         psa: json["psa"],
@@ -190,7 +190,7 @@ class FeatureProperties {
         station: json["station"],
         street: json["street"],
         suburb: json["suburb"],
-        type: json["type"] == null ? null : propertiesTypeValues.map[json["type"]]!,
+        type: (json.containsKey("type") ? json["type"] : throw FormatException('Missing required property')) == null ? null : propertiesTypeValues.map[(json.containsKey("type") ? json["type"] : throw FormatException('Missing required property'))]!,
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/4d6fb.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/4d6fb.json/default/TopLevel.dart
index b46fe63..a564860 100644
--- a/base/dart/test/inputs/json/misc/4d6fb.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/4d6fb.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -210,14 +210,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -225,7 +225,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: json["domain"],
         downs: json["downs"],
         edited: json["edited"],
@@ -235,44 +235,44 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"] == null ? null : Media.fromJson(json["media"]),
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("media") ? json["media"] : throw FormatException('Missing required property'))),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         postHint: json["post_hint"] == null ? null : postHintValues.map[json["post_hint"]]!,
         preview: json["preview"] == null ? null : Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"] == null ? null : Media.fromJson(json["secure_media"]),
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property'))),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
-        thumbnailHeight: json["thumbnail_height"],
-        thumbnailWidth: json["thumbnail_width"],
+        thumbnailHeight: (json.containsKey("thumbnail_height") ? json["thumbnail_height"] : throw FormatException('Missing required property')),
+        thumbnailWidth: (json.containsKey("thumbnail_width") ? json["thumbnail_width"] : throw FormatException('Missing required property')),
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/570ec.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/570ec.json/default/TopLevel.dart
index 44cdd8d..7c11dd4 100644
--- a/base/dart/test/inputs/json/misc/570ec.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/570ec.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<OtherName>.from(json["other_names"].map((x) => OtherName.fromJson(x))),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
@@ -115,7 +115,7 @@ class OtherName {
 
     factory OtherName.fromJson(Map<String, dynamic> json) => OtherName(
         name: json["name"],
-        note: json["note"],
+        note: (json.containsKey("note") ? json["note"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/66121.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/66121.json/default/TopLevel.dart
index 060fd6c..af0c151 100644
--- a/base/dart/test/inputs/json/misc/66121.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/66121.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<dynamic>.from(json["other_names"].map((x) => x)),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/6c155.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/6c155.json/default/TopLevel.dart
index 1f721a5..6590fcb 100644
--- a/base/dart/test/inputs/json/misc/6c155.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/6c155.json/default/TopLevel.dart
@@ -138,7 +138,7 @@ class Result {
         date: json["date"],
         image: List<dynamic>.from(json["image"].map((x) => x)),
         location: Location.fromJson(json["location"]),
-        teaser: json["teaser"],
+        teaser: (json.containsKey("teaser") ? json["teaser"] : throw FormatException('Missing required property')),
         title: json["title"],
         topic: List<dynamic>.from(json["topic"].map((x) => x)),
         url: json["url"],
@@ -218,7 +218,7 @@ class Location {
         phoneNumber: json["phone_number"],
         phoneNumberExtension: json["phone_number_extension"],
         postalCode: json["postal_code"],
-        subPremise: json["sub_premise"],
+        subPremise: (json.containsKey("sub_premise") ? json["sub_premise"] : throw FormatException('Missing required property')),
         thoroughfare: json["thoroughfare"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/6de06.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/6de06.json/default/TopLevel.dart
index 27e4633..dda9bde 100644
--- a/base/dart/test/inputs/json/misc/6de06.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/6de06.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -210,14 +210,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -225,7 +225,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: json["domain"],
         downs: json["downs"],
         edited: json["edited"],
@@ -235,44 +235,44 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"] == null ? null : Media.fromJson(json["media"]),
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("media") ? json["media"] : throw FormatException('Missing required property'))),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         postHint: json["post_hint"] == null ? null : postHintValues.map[json["post_hint"]]!,
         preview: json["preview"] == null ? null : Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"] == null ? null : Media.fromJson(json["secure_media"]),
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property'))),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: json["subreddit"],
         subredditId: json["subreddit_id"],
         subredditNamePrefixed: json["subreddit_name_prefixed"],
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
-        thumbnailHeight: json["thumbnail_height"],
-        thumbnailWidth: json["thumbnail_width"],
+        thumbnailHeight: (json.containsKey("thumbnail_height") ? json["thumbnail_height"] : throw FormatException('Missing required property')),
+        thumbnailWidth: (json.containsKey("thumbnail_width") ? json["thumbnail_width"] : throw FormatException('Missing required property')),
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/734ad.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/734ad.json/default/TopLevel.dart
index e4106c8..3b467c3 100644
--- a/base/dart/test/inputs/json/misc/734ad.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/734ad.json/default/TopLevel.dart
@@ -180,14 +180,14 @@ class Result {
     });
 
     factory Result.fromJson(Map<String, dynamic> json) => Result(
-        acronym: json["acronym"],
+        acronym: (json.containsKey("acronym") ? json["acronym"] : throw FormatException('Missing required property')),
         activityConsultCommittees: json["activity_consult_committees"],
         activityEuLegislative: json["activity_eu_legislative"],
         activityExpertGroups: json["activity_expert_groups"],
         activityHighLevelGroups: json["activity_high_level_groups"],
         activityIndustryForums: json["activity_industry_forums"],
         activityInterGroups: json["activity_inter_groups"],
-        activityOther: json["activity_other"],
+        activityOther: (json.containsKey("activity_other") ? json["activity_other"] : throw FormatException('Missing required property')),
         activityRelevantComm: json["activity_relevant_comm"],
         beOfficeCountry: json["be_office_country"],
         beOfficeLat: json["be_office_lat"]?.toDouble(),
@@ -204,11 +204,11 @@ class Result {
         goals: json["goals"],
         head: json["head"],
         headOfficeCountry: json["head_office_country"],
-        headOfficeLat: json["head_office_lat"]?.toDouble(),
-        headOfficeLon: json["head_office_lon"]?.toDouble(),
+        headOfficeLat: (json.containsKey("head_office_lat") ? json["head_office_lat"] : throw FormatException('Missing required property'))?.toDouble(),
+        headOfficeLon: (json.containsKey("head_office_lon") ? json["head_office_lon"] : throw FormatException('Missing required property'))?.toDouble(),
         headOfficePhone: json["head_office_phone"],
-        headOfficePostCode: json["head_office_post_code"],
-        headOfficePostbox: json["head_office_postbox"],
+        headOfficePostCode: (json.containsKey("head_office_post_code") ? json["head_office_post_code"] : throw FormatException('Missing required property')),
+        headOfficePostbox: (json.containsKey("head_office_postbox") ? json["head_office_postbox"] : throw FormatException('Missing required property')),
         headOfficeStreet: json["head_office_street"],
         headOfficeTown: json["head_office_town"],
         id: json["id"],
@@ -220,16 +220,16 @@ class Result {
         mainCategory: json["main_category"],
         mainCategoryTitle: json["main_category_title"],
         members: json["members"],
-        members100: json["members_100"],
-        members25: json["members_25"],
-        members50: json["members_50"],
-        members75: json["members_75"],
+        members100: (json.containsKey("members_100") ? json["members_100"] : throw FormatException('Missing required property')),
+        members25: (json.containsKey("members_25") ? json["members_25"] : throw FormatException('Missing required property')),
+        members50: (json.containsKey("members_50") ? json["members_50"] : throw FormatException('Missing required property')),
+        members75: (json.containsKey("members_75") ? json["members_75"] : throw FormatException('Missing required property')),
         membersFte: json["members_fte"]?.toDouble(),
         name: json["name"],
-        nativeName: json["native_name"],
-        networking: json["networking"],
-        numberOfNaturalPersons: json["number_of_natural_persons"],
-        otherCodeOfConduct: json["other_code_of_conduct"],
+        nativeName: (json.containsKey("native_name") ? json["native_name"] : throw FormatException('Missing required property')),
+        networking: (json.containsKey("networking") ? json["networking"] : throw FormatException('Missing required property')),
+        numberOfNaturalPersons: (json.containsKey("number_of_natural_persons") ? json["number_of_natural_persons"] : throw FormatException('Missing required property')),
+        otherCodeOfConduct: (json.containsKey("other_code_of_conduct") ? json["other_code_of_conduct"] : throw FormatException('Missing required property')),
         registrationDate: DateTime.parse(json["registration_date"]),
         status: statusValues.map[json["status"]]!,
         structureMembers: json["structure_members"],
@@ -237,7 +237,7 @@ class Result {
         subCategoryTitle: json["sub_category_title"],
         updatedAt: DateTime.parse(json["updated_at"]),
         uri: json["uri"],
-        webSiteUrl: json["web_site_url"],
+        webSiteUrl: (json.containsKey("web_site_url") ? json["web_site_url"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/7eb30.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/7eb30.json/default/TopLevel.dart
index 6958fb2..b88b890 100644
--- a/base/dart/test/inputs/json/misc/7eb30.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/7eb30.json/default/TopLevel.dart
@@ -24,7 +24,7 @@ class TopLevel {
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         count: json["count"],
         next: json["next"],
-        previous: json["previous"],
+        previous: (json.containsKey("previous") ? json["previous"] : throw FormatException('Missing required property')),
         results: List<Result>.from(json["results"].map((x) => Result.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/7f568.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/7f568.json/default/TopLevel.dart
index e4d18dc..8b7058f 100644
--- a/base/dart/test/inputs/json/misc/7f568.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/7f568.json/default/TopLevel.dart
@@ -50,7 +50,7 @@ class TopLevel {
         commentsUrl: json["comments_url"],
         commitsUrl: json["commits_url"],
         createdAt: DateTime.parse(json["created_at"]),
-        description: json["description"],
+        description: (json.containsKey("description") ? json["description"] : throw FormatException('Missing required property')),
         files: Map.from(json["files"]).map((k, v) => MapEntry<String, FileValue>(k, FileValue.fromJson(v))),
         forksUrl: json["forks_url"],
         gitPullUrl: json["git_pull_url"],
@@ -61,7 +61,7 @@ class TopLevel {
         truncated: json["truncated"],
         updatedAt: DateTime.parse(json["updated_at"]),
         url: json["url"],
-        user: json["user"],
+        user: (json.containsKey("user") ? json["user"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -101,7 +101,7 @@ class FileValue {
 
     factory FileValue.fromJson(Map<String, dynamic> json) => FileValue(
         filename: json["filename"],
-        language: json["language"] == null ? null : languageValues.map[json["language"]]!,
+        language: (json.containsKey("language") ? json["language"] : throw FormatException('Missing required property')) == null ? null : languageValues.map[(json.containsKey("language") ? json["language"] : throw FormatException('Missing required property'))]!,
         rawUrl: json["raw_url"],
         size: json["size"],
         type: typeValues.map[json["type"]]!,
diff --git a/base/dart/test/inputs/json/misc/80aff.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/80aff.json/default/TopLevel.dart
index 2e100ea..981b80c 100644
--- a/base/dart/test/inputs/json/misc/80aff.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/80aff.json/default/TopLevel.dart
@@ -82,7 +82,7 @@ class Result {
         id: json["id"],
         items: json["items"],
         name: json["name"],
-        parent: json["parent"],
+        parent: (json.containsKey("parent") ? json["parent"] : throw FormatException('Missing required property')),
         updatedAt: DateTime.parse(json["updated_at"]),
         uri: json["uri"],
     );
diff --git a/base/dart/test/inputs/json/misc/8592b.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/8592b.json/default/TopLevel.dart
index 44cc08b..d321249 100644
--- a/base/dart/test/inputs/json/misc/8592b.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/8592b.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -210,14 +210,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -225,7 +225,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: json["domain"],
         downs: json["downs"],
         edited: json["edited"],
@@ -235,29 +235,29 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
         linkFlairCssClass: json["link_flair_css_class"],
         linkFlairText: json["link_flair_text"],
         locked: json["locked"],
-        media: json["media"],
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         postHint: json["post_hint"] == null ? null : postHintValues.map[json["post_hint"]]!,
         preview: json["preview"] == null ? null : Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"],
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
@@ -266,13 +266,13 @@ class ChildData {
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
         suggestedSort: suggestedSortValues.map[json["suggested_sort"]]!,
         thumbnail: json["thumbnail"],
-        thumbnailHeight: json["thumbnail_height"],
-        thumbnailWidth: json["thumbnail_width"],
+        thumbnailHeight: (json.containsKey("thumbnail_height") ? json["thumbnail_height"] : throw FormatException('Missing required property')),
+        thumbnailWidth: (json.containsKey("thumbnail_width") ? json["thumbnail_width"] : throw FormatException('Missing required property')),
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/996bd.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/996bd.json/default/TopLevel.dart
index ec29244..af49390 100644
--- a/base/dart/test/inputs/json/misc/996bd.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/996bd.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<dynamic>.from(json["other_names"].map((x) => x)),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/9a503.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/9a503.json/default/TopLevel.dart
index c2be9bc..8972863 100644
--- a/base/dart/test/inputs/json/misc/9a503.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/9a503.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<dynamic>.from(json["other_names"].map((x) => x)),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/9ac3b.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/9ac3b.json/default/TopLevel.dart
index 6550522..4302fb8 100644
--- a/base/dart/test/inputs/json/misc/9ac3b.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/9ac3b.json/default/TopLevel.dart
@@ -92,9 +92,9 @@ class Result {
         id: json["id"],
         lastName: json["last_name"],
         name: json["name"],
-        position: json["position"],
+        position: (json.containsKey("position") ? json["position"] : throw FormatException('Missing required property')),
         status: statusValues.map[json["status"]]!,
-        title: json["title"] == null ? null : titleValues.map[json["title"]]!,
+        title: (json.containsKey("title") ? json["title"] : throw FormatException('Missing required property')) == null ? null : titleValues.map[(json.containsKey("title") ? json["title"] : throw FormatException('Missing required property'))]!,
         updatedAt: DateTime.parse(json["updated_at"]),
         uri: json["uri"],
     );
diff --git a/base/dart/test/inputs/json/misc/9eed5.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/9eed5.json/default/TopLevel.dart
index 31acbed..f6e9cc8 100644
--- a/base/dart/test/inputs/json/misc/9eed5.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/9eed5.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<dynamic>.from(json["other_names"].map((x) => x)),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
diff --git a/base/dart/test/inputs/json/misc/ad8be.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/ad8be.json/default/TopLevel.dart
index 7405e81..4f1ff25 100644
--- a/base/dart/test/inputs/json/misc/ad8be.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/ad8be.json/default/TopLevel.dart
@@ -36,7 +36,7 @@ class TopLevel {
         links: List<Link>.from(json["links"].map((x) => Link.fromJson(x))),
         name: json["name"],
         otherNames: List<OtherName>.from(json["other_names"].map((x) => OtherName.fromJson(x))),
-        supersededBy: json["superseded_by"],
+        supersededBy: (json.containsKey("superseded_by") ? json["superseded_by"] : throw FormatException('Missing required property')),
         text: List<Text>.from(json["text"].map((x) => Text.fromJson(x))),
     );
 
@@ -163,7 +163,7 @@ class OtherName {
 
     factory OtherName.fromJson(Map<String, dynamic> json) => OtherName(
         name: json["name"],
-        note: json["note"],
+        note: (json.containsKey("note") ? json["note"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/ae7f0.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/ae7f0.json/default/TopLevel.dart
index c4b2537..3b4900f 100644
--- a/base/dart/test/inputs/json/misc/ae7f0.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/ae7f0.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -202,14 +202,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -217,7 +217,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: domainValues.map[json["domain"]]!,
         downs: json["downs"],
         edited: json["edited"],
@@ -227,40 +227,40 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"],
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"],
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/af2d1.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/af2d1.json/default/TopLevel.dart
index b8709fe..0108921 100644
--- a/base/dart/test/inputs/json/misc/af2d1.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/af2d1.json/default/TopLevel.dart
@@ -222,44 +222,44 @@ class FeatureProperties {
     });
 
     factory FeatureProperties.fromJson(Map<String, dynamic> json) => FeatureProperties(
-        addImprov: json["add_improv"] == null ? null : addImprovValues.map[json["add_improv"]]!,
+        addImprov: (json.containsKey("add_improv") ? json["add_improv"] : throw FormatException('Missing required property')) == null ? null : addImprovValues.map[(json.containsKey("add_improv") ? json["add_improv"] : throw FormatException('Missing required property'))]!,
         area: json["area_"]?.toDouble(),
         assetNumb: json["asset_numb"],
-        comments: json["comments"],
+        comments: (json.containsKey("comments") ? json["comments"] : throw FormatException('Missing required property')),
         condition: json["condition"],
-        constructi: json["constructi"],
-        createdate: json["createdate"],
-        createuser: json["createuser"],
-        disposalD: json["disposal_d"],
+        constructi: (json.containsKey("constructi") ? json["constructi"] : throw FormatException('Missing required property')),
+        createdate: (json.containsKey("createdate") ? json["createdate"] : throw FormatException('Missing required property')),
+        createuser: (json.containsKey("createuser") ? json["createuser"] : throw FormatException('Missing required property')),
+        disposalD: (json.containsKey("disposal_d") ? json["disposal_d"] : throw FormatException('Missing required property')),
         documents: json["documents"],
-        drawingNu: json["drawing_nu"],
-        fileNumbe: json["file_numbe"],
-        folderNum: json["folder_num"],
-        fundingBa: json["funding_ba"] == null ? null : fundingBaValues.map[json["funding_ba"]]!,
+        drawingNu: (json.containsKey("drawing_nu") ? json["drawing_nu"] : throw FormatException('Missing required property')),
+        fileNumbe: (json.containsKey("file_numbe") ? json["file_numbe"] : throw FormatException('Missing required property')),
+        folderNum: (json.containsKey("folder_num") ? json["folder_num"] : throw FormatException('Missing required property')),
+        fundingBa: (json.containsKey("funding_ba") ? json["funding_ba"] : throw FormatException('Missing required property')) == null ? null : fundingBaValues.map[(json.containsKey("funding_ba") ? json["funding_ba"] : throw FormatException('Missing required property'))]!,
         historicC: json["historic_c"],
         inspection: json["inspection"],
-        inspectors: json["inspectors"],
-        lastUpdat: json["last_updat"],
-        levelAccu: json["level_accu"] == null ? null : levelAccuValues.map[json["level_accu"]]!,
+        inspectors: (json.containsKey("inspectors") ? json["inspectors"] : throw FormatException('Missing required property')),
+        lastUpdat: (json.containsKey("last_updat") ? json["last_updat"] : throw FormatException('Missing required property')),
+        levelAccu: (json.containsKey("level_accu") ? json["level_accu"] : throw FormatException('Missing required property')) == null ? null : levelAccuValues.map[(json.containsKey("level_accu") ? json["level_accu"] : throw FormatException('Missing required property'))]!,
         material: materialValues.map[json["material"]]!,
         miPrinx: json["mi_prinx"],
         miSymbolo: miSymboloValues.map[json["mi_symbolo"]]!,
         numberLan: json["number_lan"],
-        owner: json["owner"],
-        positional: json["positional"] == null ? null : levelAccuValues.map[json["positional"]]!,
-        projectNu: json["project_nu"],
+        owner: (json.containsKey("owner") ? json["owner"] : throw FormatException('Missing required property')),
+        positional: (json.containsKey("positional") ? json["positional"] : throw FormatException('Missing required property')) == null ? null : levelAccuValues.map[(json.containsKey("positional") ? json["positional"] : throw FormatException('Missing required property'))]!,
+        projectNu: (json.containsKey("project_nu") ? json["project_nu"] : throw FormatException('Missing required property')),
         recId: json["rec_id"],
-        recordCre: json["record_cre"],
+        recordCre: (json.containsKey("record_cre") ? json["record_cre"] : throw FormatException('Missing required property')),
         shapeArea: json["shape_area"]?.toDouble(),
         shapeLeng: json["shape_leng"]?.toDouble(),
         status: statusValues.map[json["status"]]!,
-        surveyNum: json["survey_num"],
+        surveyNum: (json.containsKey("survey_num") ? json["survey_num"] : throw FormatException('Missing required property')),
         toeRl: json["toe_rl"]?.toDouble(),
         topRl: json["top_rl"]?.toDouble(),
-        type: json["type"] == null ? null : propertiesTypeValues.map[json["type"]]!,
+        type: (json.containsKey("type") ? json["type"] : throw FormatException('Missing required property')) == null ? null : propertiesTypeValues.map[(json.containsKey("type") ? json["type"] : throw FormatException('Missing required property'))]!,
         updateDat: json["update_dat"],
-        updatedate: json["updatedate"],
-        updateuser: json["updateuser"],
+        updatedate: (json.containsKey("updatedate") ? json["updatedate"] : throw FormatException('Missing required property')),
+        updateuser: (json.containsKey("updateuser") ? json["updateuser"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/misc/be234.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/be234.json/default/TopLevel.dart
index e682854..a3ca1be 100644
--- a/base/dart/test/inputs/json/misc/be234.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/be234.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -210,14 +210,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -225,7 +225,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: domainValues.map[json["domain"]]!,
         downs: json["downs"],
         edited: json["edited"],
@@ -235,36 +235,36 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"] == null ? null : Media.fromJson(json["media"]),
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("media") ? json["media"] : throw FormatException('Missing required property'))),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         postHint: postHintValues.map[json["post_hint"]]!,
         preview: Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"] == null ? null : Media.fromJson(json["secure_media"]),
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')) == null ? null : Media.fromJson((json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property'))),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
         thumbnailHeight: json["thumbnail_height"],
         thumbnailWidth: json["thumbnail_width"],
@@ -272,7 +272,7 @@ class ChildData {
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/d23d5.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/d23d5.json/default/TopLevel.dart
index d631ace..fc0a910 100644
--- a/base/dart/test/inputs/json/misc/d23d5.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/d23d5.json/default/TopLevel.dart
@@ -76,7 +76,7 @@ class Result {
     });
 
     factory Result.fromJson(Map<String, dynamic> json) => Result(
-        acronym: json["acronym"],
+        acronym: (json.containsKey("acronym") ? json["acronym"] : throw FormatException('Missing required property')),
         createdAt: DateTime.parse(json["created_at"]),
         id: json["id"],
         name: json["name"],
diff --git a/base/dart/test/inputs/json/misc/dec3a.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/dec3a.json/default/TopLevel.dart
index f2b513b..0b5156b 100644
--- a/base/dart/test/inputs/json/misc/dec3a.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/dec3a.json/default/TopLevel.dart
@@ -151,17 +151,17 @@ class Result {
         body: json["body"],
         changed: json["changed"],
         created: json["created"],
-        deadline: json["deadline"],
-        hiringOffice: json["hiring_office"],
+        deadline: (json.containsKey("deadline") ? json["deadline"] : throw FormatException('Missing required property')),
+        hiringOffice: (json.containsKey("hiring_office") ? json["hiring_office"] : throw FormatException('Missing required property')),
         hiringOrg: HiringOrg.fromJson(json["hiring_org"]),
-        jobId: json["job_id"],
+        jobId: (json.containsKey("job_id") ? json["job_id"] : throw FormatException('Missing required property')),
         language: json["language"],
         location: Location.fromJson(json["location"]),
         numPositions: json["num_positions"],
         position: json["position"],
         practiceArea: json["practice_area"],
         qualifications: json["qualifications"],
-        relocationExpenses: json["relocation_expenses"],
+        relocationExpenses: (json.containsKey("relocation_expenses") ? json["relocation_expenses"] : throw FormatException('Missing required property')),
         salary: json["salary"],
         title: json["title"],
         travel: json["travel"],
@@ -250,7 +250,7 @@ class Location {
         phoneNumber: json["phone_number"],
         phoneNumberExtension: json["phone_number_extension"],
         postalCode: json["postal_code"],
-        subPremise: json["sub_premise"],
+        subPremise: (json.containsKey("sub_premise") ? json["sub_premise"] : throw FormatException('Missing required property')),
         thoroughfare: json["thoroughfare"],
     );
 
diff --git a/base/dart/test/inputs/json/misc/f22f5.json/default/TopLevel.dart b/head/dart/test/inputs/json/misc/f22f5.json/default/TopLevel.dart
index fb4f6d0..ee4f976 100644
--- a/base/dart/test/inputs/json/misc/f22f5.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/misc/f22f5.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -202,14 +202,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -217,7 +217,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"]?.toDouble(),
         createdUtc: json["created_utc"]?.toDouble(),
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: json["domain"],
         downs: json["downs"],
         edited: json["edited"],
@@ -227,40 +227,40 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"],
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         permalink: json["permalink"],
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"],
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
         title: json["title"],
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
     );
 
diff --git a/base/dart/test/inputs/json/priority/bug2590.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/bug2590.json/default/TopLevel.dart
index dd1440d..c7bdea7 100644
--- a/base/dart/test/inputs/json/priority/bug2590.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/bug2590.json/default/TopLevel.dart
@@ -36,8 +36,8 @@ class Invoice {
     });
 
     factory Invoice.fromJson(Map<String, dynamic> json) => Invoice(
-        createdAt: json["createdAt"] == null ? null : DateTime.parse(json["createdAt"]),
-        dueDate: json["dueDate"] == null ? null : DateTime.parse(json["dueDate"]),
+        createdAt: (json.containsKey("createdAt") ? json["createdAt"] : throw FormatException('Missing required property')) == null ? null : DateTime.parse((json.containsKey("createdAt") ? json["createdAt"] : throw FormatException('Missing required property'))),
+        dueDate: (json.containsKey("dueDate") ? json["dueDate"] : throw FormatException('Missing required property')) == null ? null : DateTime.parse((json.containsKey("dueDate") ? json["dueDate"] : throw FormatException('Missing required property'))),
         name: json["name"],
     );
 
diff --git a/base/dart/test/inputs/json/priority/combinations1.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations1.json/default/TopLevel.dart
index ae9ec9d..f48962c 100644
--- a/base/dart/test/inputs/json/priority/combinations1.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations1.json/default/TopLevel.dart
@@ -238,26 +238,26 @@ class CerographClass {
     });
 
     factory CerographClass.fromJson(Map<String, dynamic> json) => CerographClass(
-        apotropaion: json["apotropaion"],
-        casuary: json["casuary"],
-        creaker: json["creaker"],
-        disqualification: json["disqualification"],
-        imperatorious: json["imperatorious"],
-        impermeabilize: json["impermeabilize"],
-        metastoma: json["metastoma"],
-        noctidiurnal: json["noctidiurnal"],
-        nonreserve: json["nonreserve"],
-        ophthalmotonometry: json["ophthalmotonometry"],
-        pailful: json["pailful"],
-        pigfish: json["pigfish"],
-        pongee: json["pongee"],
-        prosodical: json["prosodical"],
-        scrofuloderm: json["scrofuloderm"],
-        storekeeping: json["storekeeping"],
-        therologist: json["therologist"],
-        tolowa: json["Tolowa"],
-        tradeful: json["tradeful"],
-        unriveting: json["unriveting"],
+        apotropaion: (json.containsKey("apotropaion") ? json["apotropaion"] : throw FormatException('Missing required property')),
+        casuary: (json.containsKey("casuary") ? json["casuary"] : throw FormatException('Missing required property')),
+        creaker: (json.containsKey("creaker") ? json["creaker"] : throw FormatException('Missing required property')),
+        disqualification: (json.containsKey("disqualification") ? json["disqualification"] : throw FormatException('Missing required property')),
+        imperatorious: (json.containsKey("imperatorious") ? json["imperatorious"] : throw FormatException('Missing required property')),
+        impermeabilize: (json.containsKey("impermeabilize") ? json["impermeabilize"] : throw FormatException('Missing required property')),
+        metastoma: (json.containsKey("metastoma") ? json["metastoma"] : throw FormatException('Missing required property')),
+        noctidiurnal: (json.containsKey("noctidiurnal") ? json["noctidiurnal"] : throw FormatException('Missing required property')),
+        nonreserve: (json.containsKey("nonreserve") ? json["nonreserve"] : throw FormatException('Missing required property')),
+        ophthalmotonometry: (json.containsKey("ophthalmotonometry") ? json["ophthalmotonometry"] : throw FormatException('Missing required property')),
+        pailful: (json.containsKey("pailful") ? json["pailful"] : throw FormatException('Missing required property')),
+        pigfish: (json.containsKey("pigfish") ? json["pigfish"] : throw FormatException('Missing required property')),
+        pongee: (json.containsKey("pongee") ? json["pongee"] : throw FormatException('Missing required property')),
+        prosodical: (json.containsKey("prosodical") ? json["prosodical"] : throw FormatException('Missing required property')),
+        scrofuloderm: (json.containsKey("scrofuloderm") ? json["scrofuloderm"] : throw FormatException('Missing required property')),
+        storekeeping: (json.containsKey("storekeeping") ? json["storekeeping"] : throw FormatException('Missing required property')),
+        therologist: (json.containsKey("therologist") ? json["therologist"] : throw FormatException('Missing required property')),
+        tolowa: (json.containsKey("Tolowa") ? json["Tolowa"] : throw FormatException('Missing required property')),
+        tradeful: (json.containsKey("tradeful") ? json["tradeful"] : throw FormatException('Missing required property')),
+        unriveting: (json.containsKey("unriveting") ? json["unriveting"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -416,7 +416,7 @@ class CimeliaClass {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -586,26 +586,26 @@ class CredulityClass {
     });
 
     factory CredulityClass.fromJson(Map<String, dynamic> json) => CredulityClass(
-        ammonolytic: json["ammonolytic"],
-        bushmaster: json["bushmaster"],
-        considering: json["considering"],
-        consuetudinary: json["consuetudinary"],
-        embarras: json["embarras"],
-        fineness: json["fineness"],
-        flaithship: json["flaithship"],
-        flavia: json["Flavia"],
-        gruffly: json["gruffly"],
-        hedychium: json["Hedychium"],
-        leadwort: json["leadwort"],
-        overseriously: json["overseriously"],
-        parabola: json["parabola"],
-        pectinatodenticulate: json["pectinatodenticulate"],
-        popean: json["Popean"],
-        pornocrat: json["pornocrat"],
-        quadrisect: json["quadrisect"],
-        seriality: json["seriality"],
-        vamphorn: json["vamphorn"],
-        wharp: json["wharp"],
+        ammonolytic: (json.containsKey("ammonolytic") ? json["ammonolytic"] : throw FormatException('Missing required property')),
+        bushmaster: (json.containsKey("bushmaster") ? json["bushmaster"] : throw FormatException('Missing required property')),
+        considering: (json.containsKey("considering") ? json["considering"] : throw FormatException('Missing required property')),
+        consuetudinary: (json.containsKey("consuetudinary") ? json["consuetudinary"] : throw FormatException('Missing required property')),
+        embarras: (json.containsKey("embarras") ? json["embarras"] : throw FormatException('Missing required property')),
+        fineness: (json.containsKey("fineness") ? json["fineness"] : throw FormatException('Missing required property')),
+        flaithship: (json.containsKey("flaithship") ? json["flaithship"] : throw FormatException('Missing required property')),
+        flavia: (json.containsKey("Flavia") ? json["Flavia"] : throw FormatException('Missing required property')),
+        gruffly: (json.containsKey("gruffly") ? json["gruffly"] : throw FormatException('Missing required property')),
+        hedychium: (json.containsKey("Hedychium") ? json["Hedychium"] : throw FormatException('Missing required property')),
+        leadwort: (json.containsKey("leadwort") ? json["leadwort"] : throw FormatException('Missing required property')),
+        overseriously: (json.containsKey("overseriously") ? json["overseriously"] : throw FormatException('Missing required property')),
+        parabola: (json.containsKey("parabola") ? json["parabola"] : throw FormatException('Missing required property')),
+        pectinatodenticulate: (json.containsKey("pectinatodenticulate") ? json["pectinatodenticulate"] : throw FormatException('Missing required property')),
+        popean: (json.containsKey("Popean") ? json["Popean"] : throw FormatException('Missing required property')),
+        pornocrat: (json.containsKey("pornocrat") ? json["pornocrat"] : throw FormatException('Missing required property')),
+        quadrisect: (json.containsKey("quadrisect") ? json["quadrisect"] : throw FormatException('Missing required property')),
+        seriality: (json.containsKey("seriality") ? json["seriality"] : throw FormatException('Missing required property')),
+        vamphorn: (json.containsKey("vamphorn") ? json["vamphorn"] : throw FormatException('Missing required property')),
+        wharp: (json.containsKey("wharp") ? json["wharp"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -678,26 +678,26 @@ class DeruralizeClass {
     });
 
     factory DeruralizeClass.fromJson(Map<String, dynamic> json) => DeruralizeClass(
-        bockerel: json["bockerel"],
-        boulder: json["boulder"],
-        churrus: json["churrus"],
-        counterdigged: json["counterdigged"],
-        dialogite: json["dialogite"],
-        digenic: json["digenic"],
-        dunbird: json["dunbird"],
-        ergatogyne: json["ergatogyne"],
-        fiendful: json["fiendful"],
-        jackrod: json["jackrod"],
-        jehovistic: json["Jehovistic"],
-        paninean: json["Paninean"],
-        panther: json["panther"],
-        placentigerous: json["placentigerous"],
-        romney: json["Romney"],
-        sparm: json["sparm"],
-        tocsin: json["tocsin"],
-        unnicked: json["unnicked"],
-        unstavable: json["unstavable"],
-        windfirm: json["windfirm"],
+        bockerel: (json.containsKey("bockerel") ? json["bockerel"] : throw FormatException('Missing required property')),
+        boulder: (json.containsKey("boulder") ? json["boulder"] : throw FormatException('Missing required property')),
+        churrus: (json.containsKey("churrus") ? json["churrus"] : throw FormatException('Missing required property')),
+        counterdigged: (json.containsKey("counterdigged") ? json["counterdigged"] : throw FormatException('Missing required property')),
+        dialogite: (json.containsKey("dialogite") ? json["dialogite"] : throw FormatException('Missing required property')),
+        digenic: (json.containsKey("digenic") ? json["digenic"] : throw FormatException('Missing required property')),
+        dunbird: (json.containsKey("dunbird") ? json["dunbird"] : throw FormatException('Missing required property')),
+        ergatogyne: (json.containsKey("ergatogyne") ? json["ergatogyne"] : throw FormatException('Missing required property')),
+        fiendful: (json.containsKey("fiendful") ? json["fiendful"] : throw FormatException('Missing required property')),
+        jackrod: (json.containsKey("jackrod") ? json["jackrod"] : throw FormatException('Missing required property')),
+        jehovistic: (json.containsKey("Jehovistic") ? json["Jehovistic"] : throw FormatException('Missing required property')),
+        paninean: (json.containsKey("Paninean") ? json["Paninean"] : throw FormatException('Missing required property')),
+        panther: (json.containsKey("panther") ? json["panther"] : throw FormatException('Missing required property')),
+        placentigerous: (json.containsKey("placentigerous") ? json["placentigerous"] : throw FormatException('Missing required property')),
+        romney: (json.containsKey("Romney") ? json["Romney"] : throw FormatException('Missing required property')),
+        sparm: (json.containsKey("sparm") ? json["sparm"] : throw FormatException('Missing required property')),
+        tocsin: (json.containsKey("tocsin") ? json["tocsin"] : throw FormatException('Missing required property')),
+        unnicked: (json.containsKey("unnicked") ? json["unnicked"] : throw FormatException('Missing required property')),
+        unstavable: (json.containsKey("unstavable") ? json["unstavable"] : throw FormatException('Missing required property')),
+        windfirm: (json.containsKey("windfirm") ? json["windfirm"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -770,26 +770,26 @@ class DiaereseClass {
     });
 
     factory DiaereseClass.fromJson(Map<String, dynamic> json) => DiaereseClass(
-        amoreuxia: json["Amoreuxia"],
-        ani: json["ani"],
-        bernicle: json["bernicle"],
-        blackwasher: json["blackwasher"],
-        blowhard: json["blowhard"],
-        broma: json["broma"],
-        closecross: json["closecross"],
-        congregationalism: json["congregationalism"],
-        grayly: json["grayly"],
-        historically: json["historically"],
-        hoast: json["hoast"],
-        irretentive: json["irretentive"],
-        parcener: json["parcener"],
-        pedder: json["pedder"],
-        pseudoanatomic: json["pseudoanatomic"],
-        rhizocarpian: json["rhizocarpian"],
-        samel: json["samel"],
-        silker: json["silker"],
-        subdentated: json["subdentated"],
-        subobscure: json["subobscure"],
+        amoreuxia: (json.containsKey("Amoreuxia") ? json["Amoreuxia"] : throw FormatException('Missing required property')),
+        ani: (json.containsKey("ani") ? json["ani"] : throw FormatException('Missing required property')),
+        bernicle: (json.containsKey("bernicle") ? json["bernicle"] : throw FormatException('Missing required property')),
+        blackwasher: (json.containsKey("blackwasher") ? json["blackwasher"] : throw FormatException('Missing required property')),
+        blowhard: (json.containsKey("blowhard") ? json["blowhard"] : throw FormatException('Missing required property')),
+        broma: (json.containsKey("broma") ? json["broma"] : throw FormatException('Missing required property')),
+        closecross: (json.containsKey("closecross") ? json["closecross"] : throw FormatException('Missing required property')),
+        congregationalism: (json.containsKey("congregationalism") ? json["congregationalism"] : throw FormatException('Missing required property')),
+        grayly: (json.containsKey("grayly") ? json["grayly"] : throw FormatException('Missing required property')),
+        historically: (json.containsKey("historically") ? json["historically"] : throw FormatException('Missing required property')),
+        hoast: (json.containsKey("hoast") ? json["hoast"] : throw FormatException('Missing required property')),
+        irretentive: (json.containsKey("irretentive") ? json["irretentive"] : throw FormatException('Missing required property')),
+        parcener: (json.containsKey("parcener") ? json["parcener"] : throw FormatException('Missing required property')),
+        pedder: (json.containsKey("pedder") ? json["pedder"] : throw FormatException('Missing required property')),
+        pseudoanatomic: (json.containsKey("pseudoanatomic") ? json["pseudoanatomic"] : throw FormatException('Missing required property')),
+        rhizocarpian: (json.containsKey("rhizocarpian") ? json["rhizocarpian"] : throw FormatException('Missing required property')),
+        samel: (json.containsKey("samel") ? json["samel"] : throw FormatException('Missing required property')),
+        silker: (json.containsKey("silker") ? json["silker"] : throw FormatException('Missing required property')),
+        subdentated: (json.containsKey("subdentated") ? json["subdentated"] : throw FormatException('Missing required property')),
+        subobscure: (json.containsKey("subobscure") ? json["subobscure"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -862,26 +862,26 @@ class Encrust {
     });
 
     factory Encrust.fromJson(Map<String, dynamic> json) => Encrust(
-        comradely: json["comradely"],
-        diacanthous: json["diacanthous"],
-        feminineness: json["feminineness"],
-        gossamered: json["gossamered"],
-        hibernia: json["Hibernia"],
-        hibiscus: json["Hibiscus"],
-        lepidosauria: json["Lepidosauria"],
-        lollingly: json["lollingly"],
-        manager: json["manager"],
-        mechanic: json["mechanic"],
-        overminuteness: json["overminuteness"],
-        papelonne: json["papelonne"],
-        plebification: json["plebification"],
-        pugmiller: json["pugmiller"],
-        recoveror: json["recoveror"],
-        spermatoblastic: json["spermatoblastic"],
-        syllidae: json["Syllidae"],
-        ungyved: json["ungyved"],
-        whirlabout: json["whirlabout"],
-        woodenware: json["woodenware"],
+        comradely: (json.containsKey("comradely") ? json["comradely"] : throw FormatException('Missing required property')),
+        diacanthous: (json.containsKey("diacanthous") ? json["diacanthous"] : throw FormatException('Missing required property')),
+        feminineness: (json.containsKey("feminineness") ? json["feminineness"] : throw FormatException('Missing required property')),
+        gossamered: (json.containsKey("gossamered") ? json["gossamered"] : throw FormatException('Missing required property')),
+        hibernia: (json.containsKey("Hibernia") ? json["Hibernia"] : throw FormatException('Missing required property')),
+        hibiscus: (json.containsKey("Hibiscus") ? json["Hibiscus"] : throw FormatException('Missing required property')),
+        lepidosauria: (json.containsKey("Lepidosauria") ? json["Lepidosauria"] : throw FormatException('Missing required property')),
+        lollingly: (json.containsKey("lollingly") ? json["lollingly"] : throw FormatException('Missing required property')),
+        manager: (json.containsKey("manager") ? json["manager"] : throw FormatException('Missing required property')),
+        mechanic: (json.containsKey("mechanic") ? json["mechanic"] : throw FormatException('Missing required property')),
+        overminuteness: (json.containsKey("overminuteness") ? json["overminuteness"] : throw FormatException('Missing required property')),
+        papelonne: (json.containsKey("papelonne") ? json["papelonne"] : throw FormatException('Missing required property')),
+        plebification: (json.containsKey("plebification") ? json["plebification"] : throw FormatException('Missing required property')),
+        pugmiller: (json.containsKey("pugmiller") ? json["pugmiller"] : throw FormatException('Missing required property')),
+        recoveror: (json.containsKey("recoveror") ? json["recoveror"] : throw FormatException('Missing required property')),
+        spermatoblastic: (json.containsKey("spermatoblastic") ? json["spermatoblastic"] : throw FormatException('Missing required property')),
+        syllidae: (json.containsKey("Syllidae") ? json["Syllidae"] : throw FormatException('Missing required property')),
+        ungyved: (json.containsKey("ungyved") ? json["ungyved"] : throw FormatException('Missing required property')),
+        whirlabout: (json.containsKey("whirlabout") ? json["whirlabout"] : throw FormatException('Missing required property')),
+        woodenware: (json.containsKey("woodenware") ? json["woodenware"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -954,26 +954,26 @@ class FagginglyClass {
     });
 
     factory FagginglyClass.fromJson(Map<String, dynamic> json) => FagginglyClass(
-        abranchian: json["abranchian"],
-        aculeiform: json["aculeiform"],
-        adiaphoristic: json["adiaphoristic"],
-        adoptionism: json["adoptionism"],
-        anglic: json["Anglic"],
-        antrotomy: json["antrotomy"],
-        coerciveness: json["coerciveness"],
-        decorist: json["decorist"],
-        duckhood: json["duckhood"],
-        heteromeri: json["Heteromeri"],
-        hypochnose: json["hypochnose"],
-        lochage: json["lochage"],
-        melee: json["melee"],
-        nonconformitant: json["nonconformitant"],
-        poinsettia: json["Poinsettia"],
-        putatively: json["putatively"],
-        semivolatile: json["semivolatile"],
-        soleas: json["soleas"],
-        unfastenable: json["unfastenable"],
-        unmillinered: json["unmillinered"],
+        abranchian: (json.containsKey("abranchian") ? json["abranchian"] : throw FormatException('Missing required property')),
+        aculeiform: (json.containsKey("aculeiform") ? json["aculeiform"] : throw FormatException('Missing required property')),
+        adiaphoristic: (json.containsKey("adiaphoristic") ? json["adiaphoristic"] : throw FormatException('Missing required property')),
+        adoptionism: (json.containsKey("adoptionism") ? json["adoptionism"] : throw FormatException('Missing required property')),
+        anglic: (json.containsKey("Anglic") ? json["Anglic"] : throw FormatException('Missing required property')),
+        antrotomy: (json.containsKey("antrotomy") ? json["antrotomy"] : throw FormatException('Missing required property')),
+        coerciveness: (json.containsKey("coerciveness") ? json["coerciveness"] : throw FormatException('Missing required property')),
+        decorist: (json.containsKey("decorist") ? json["decorist"] : throw FormatException('Missing required property')),
+        duckhood: (json.containsKey("duckhood") ? json["duckhood"] : throw FormatException('Missing required property')),
+        heteromeri: (json.containsKey("Heteromeri") ? json["Heteromeri"] : throw FormatException('Missing required property')),
+        hypochnose: (json.containsKey("hypochnose") ? json["hypochnose"] : throw FormatException('Missing required property')),
+        lochage: (json.containsKey("lochage") ? json["lochage"] : throw FormatException('Missing required property')),
+        melee: (json.containsKey("melee") ? json["melee"] : throw FormatException('Missing required property')),
+        nonconformitant: (json.containsKey("nonconformitant") ? json["nonconformitant"] : throw FormatException('Missing required property')),
+        poinsettia: (json.containsKey("Poinsettia") ? json["Poinsettia"] : throw FormatException('Missing required property')),
+        putatively: (json.containsKey("putatively") ? json["putatively"] : throw FormatException('Missing required property')),
+        semivolatile: (json.containsKey("semivolatile") ? json["semivolatile"] : throw FormatException('Missing required property')),
+        soleas: (json.containsKey("soleas") ? json["soleas"] : throw FormatException('Missing required property')),
+        unfastenable: (json.containsKey("unfastenable") ? json["unfastenable"] : throw FormatException('Missing required property')),
+        unmillinered: (json.containsKey("unmillinered") ? json["unmillinered"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1046,26 +1046,26 @@ class FenkClass {
     });
 
     factory FenkClass.fromJson(Map<String, dynamic> json) => FenkClass(
-        apoise: json["apoise"],
-        astronomize: json["astronomize"],
-        cockhorse: json["cockhorse"],
-        copular: json["copular"],
-        dagomba: json["Dagomba"],
-        draffy: json["draffy"],
-        foreigner: json["foreigner"],
-        guyandot: json["Guyandot"],
-        neurogliosis: json["neurogliosis"],
-        osmious: json["osmious"],
-        palpitate: json["palpitate"],
-        rebukeable: json["rebukeable"],
-        reinwardtia: json["Reinwardtia"],
-        reservatory: json["reservatory"],
-        scalt: json["scalt"],
-        scripturalize: json["scripturalize"],
-        tintometer: json["tintometer"],
-        tritoness: json["Tritoness"],
-        undergrade: json["undergrade"],
-        undermountain: json["undermountain"],
+        apoise: (json.containsKey("apoise") ? json["apoise"] : throw FormatException('Missing required property')),
+        astronomize: (json.containsKey("astronomize") ? json["astronomize"] : throw FormatException('Missing required property')),
+        cockhorse: (json.containsKey("cockhorse") ? json["cockhorse"] : throw FormatException('Missing required property')),
+        copular: (json.containsKey("copular") ? json["copular"] : throw FormatException('Missing required property')),
+        dagomba: (json.containsKey("Dagomba") ? json["Dagomba"] : throw FormatException('Missing required property')),
+        draffy: (json.containsKey("draffy") ? json["draffy"] : throw FormatException('Missing required property')),
+        foreigner: (json.containsKey("foreigner") ? json["foreigner"] : throw FormatException('Missing required property')),
+        guyandot: (json.containsKey("Guyandot") ? json["Guyandot"] : throw FormatException('Missing required property')),
+        neurogliosis: (json.containsKey("neurogliosis") ? json["neurogliosis"] : throw FormatException('Missing required property')),
+        osmious: (json.containsKey("osmious") ? json["osmious"] : throw FormatException('Missing required property')),
+        palpitate: (json.containsKey("palpitate") ? json["palpitate"] : throw FormatException('Missing required property')),
+        rebukeable: (json.containsKey("rebukeable") ? json["rebukeable"] : throw FormatException('Missing required property')),
+        reinwardtia: (json.containsKey("Reinwardtia") ? json["Reinwardtia"] : throw FormatException('Missing required property')),
+        reservatory: (json.containsKey("reservatory") ? json["reservatory"] : throw FormatException('Missing required property')),
+        scalt: (json.containsKey("scalt") ? json["scalt"] : throw FormatException('Missing required property')),
+        scripturalize: (json.containsKey("scripturalize") ? json["scripturalize"] : throw FormatException('Missing required property')),
+        tintometer: (json.containsKey("tintometer") ? json["tintometer"] : throw FormatException('Missing required property')),
+        tritoness: (json.containsKey("Tritoness") ? json["Tritoness"] : throw FormatException('Missing required property')),
+        undergrade: (json.containsKey("undergrade") ? json["undergrade"] : throw FormatException('Missing required property')),
+        undermountain: (json.containsKey("undermountain") ? json["undermountain"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1138,26 +1138,26 @@ class FlagmakingClass {
     });
 
     factory FlagmakingClass.fromJson(Map<String, dynamic> json) => FlagmakingClass(
-        albarco: json["albarco"],
-        bunodonta: json["Bunodonta"],
-        hornify: json["hornify"],
-        hydrocorisae: json["Hydrocorisae"],
-        hypoglossus: json["hypoglossus"],
-        inexpiably: json["inexpiably"],
-        ingratitude: json["ingratitude"],
-        ladyfly: json["ladyfly"],
-        medicament: json["medicament"],
-        monogrammatic: json["monogrammatic"],
-        nobbut: json["nobbut"],
-        notacanthidae: json["Notacanthidae"],
-        polyplacophore: json["polyplacophore"],
-        proexercise: json["proexercise"],
-        protoplast: json["protoplast"],
-        puzzling: json["puzzling"],
-        splanchnoskeleton: json["splanchnoskeleton"],
-        unloveliness: json["unloveliness"],
-        unquarantined: json["unquarantined"],
-        unrenounceable: json["unrenounceable"],
+        albarco: (json.containsKey("albarco") ? json["albarco"] : throw FormatException('Missing required property')),
+        bunodonta: (json.containsKey("Bunodonta") ? json["Bunodonta"] : throw FormatException('Missing required property')),
+        hornify: (json.containsKey("hornify") ? json["hornify"] : throw FormatException('Missing required property')),
+        hydrocorisae: (json.containsKey("Hydrocorisae") ? json["Hydrocorisae"] : throw FormatException('Missing required property')),
+        hypoglossus: (json.containsKey("hypoglossus") ? json["hypoglossus"] : throw FormatException('Missing required property')),
+        inexpiably: (json.containsKey("inexpiably") ? json["inexpiably"] : throw FormatException('Missing required property')),
+        ingratitude: (json.containsKey("ingratitude") ? json["ingratitude"] : throw FormatException('Missing required property')),
+        ladyfly: (json.containsKey("ladyfly") ? json["ladyfly"] : throw FormatException('Missing required property')),
+        medicament: (json.containsKey("medicament") ? json["medicament"] : throw FormatException('Missing required property')),
+        monogrammatic: (json.containsKey("monogrammatic") ? json["monogrammatic"] : throw FormatException('Missing required property')),
+        nobbut: (json.containsKey("nobbut") ? json["nobbut"] : throw FormatException('Missing required property')),
+        notacanthidae: (json.containsKey("Notacanthidae") ? json["Notacanthidae"] : throw FormatException('Missing required property')),
+        polyplacophore: (json.containsKey("polyplacophore") ? json["polyplacophore"] : throw FormatException('Missing required property')),
+        proexercise: (json.containsKey("proexercise") ? json["proexercise"] : throw FormatException('Missing required property')),
+        protoplast: (json.containsKey("protoplast") ? json["protoplast"] : throw FormatException('Missing required property')),
+        puzzling: (json.containsKey("puzzling") ? json["puzzling"] : throw FormatException('Missing required property')),
+        splanchnoskeleton: (json.containsKey("splanchnoskeleton") ? json["splanchnoskeleton"] : throw FormatException('Missing required property')),
+        unloveliness: (json.containsKey("unloveliness") ? json["unloveliness"] : throw FormatException('Missing required property')),
+        unquarantined: (json.containsKey("unquarantined") ? json["unquarantined"] : throw FormatException('Missing required property')),
+        unrenounceable: (json.containsKey("unrenounceable") ? json["unrenounceable"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1316,7 +1316,7 @@ class Interacinar {
         benefactorship: json["benefactorship"],
         triseriatim: json["triseriatim"],
         tubbing: json["tubbing"],
-        untrimmed: json["untrimmed"],
+        untrimmed: (json.containsKey("untrimmed") ? json["untrimmed"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations1.json/final-props-false--58a791807e0c/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations1.json/final-props-false--58a791807e0c/TopLevel.dart
index 5dce598..1253924 100644
--- a/base/dart/test/inputs/json/priority/combinations1.json/final-props-false--58a791807e0c/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations1.json/final-props-false--58a791807e0c/TopLevel.dart
@@ -238,26 +238,26 @@ class CerographClass {
     });
 
     factory CerographClass.fromJson(Map<String, dynamic> json) => CerographClass(
-        apotropaion: json["apotropaion"],
-        casuary: json["casuary"],
-        creaker: json["creaker"],
-        disqualification: json["disqualification"],
-        imperatorious: json["imperatorious"],
-        impermeabilize: json["impermeabilize"],
-        metastoma: json["metastoma"],
-        noctidiurnal: json["noctidiurnal"],
-        nonreserve: json["nonreserve"],
-        ophthalmotonometry: json["ophthalmotonometry"],
-        pailful: json["pailful"],
-        pigfish: json["pigfish"],
-        pongee: json["pongee"],
-        prosodical: json["prosodical"],
-        scrofuloderm: json["scrofuloderm"],
-        storekeeping: json["storekeeping"],
-        therologist: json["therologist"],
-        tolowa: json["Tolowa"],
-        tradeful: json["tradeful"],
-        unriveting: json["unriveting"],
+        apotropaion: (json.containsKey("apotropaion") ? json["apotropaion"] : throw FormatException('Missing required property')),
+        casuary: (json.containsKey("casuary") ? json["casuary"] : throw FormatException('Missing required property')),
+        creaker: (json.containsKey("creaker") ? json["creaker"] : throw FormatException('Missing required property')),
+        disqualification: (json.containsKey("disqualification") ? json["disqualification"] : throw FormatException('Missing required property')),
+        imperatorious: (json.containsKey("imperatorious") ? json["imperatorious"] : throw FormatException('Missing required property')),
+        impermeabilize: (json.containsKey("impermeabilize") ? json["impermeabilize"] : throw FormatException('Missing required property')),
+        metastoma: (json.containsKey("metastoma") ? json["metastoma"] : throw FormatException('Missing required property')),
+        noctidiurnal: (json.containsKey("noctidiurnal") ? json["noctidiurnal"] : throw FormatException('Missing required property')),
+        nonreserve: (json.containsKey("nonreserve") ? json["nonreserve"] : throw FormatException('Missing required property')),
+        ophthalmotonometry: (json.containsKey("ophthalmotonometry") ? json["ophthalmotonometry"] : throw FormatException('Missing required property')),
+        pailful: (json.containsKey("pailful") ? json["pailful"] : throw FormatException('Missing required property')),
+        pigfish: (json.containsKey("pigfish") ? json["pigfish"] : throw FormatException('Missing required property')),
+        pongee: (json.containsKey("pongee") ? json["pongee"] : throw FormatException('Missing required property')),
+        prosodical: (json.containsKey("prosodical") ? json["prosodical"] : throw FormatException('Missing required property')),
+        scrofuloderm: (json.containsKey("scrofuloderm") ? json["scrofuloderm"] : throw FormatException('Missing required property')),
+        storekeeping: (json.containsKey("storekeeping") ? json["storekeeping"] : throw FormatException('Missing required property')),
+        therologist: (json.containsKey("therologist") ? json["therologist"] : throw FormatException('Missing required property')),
+        tolowa: (json.containsKey("Tolowa") ? json["Tolowa"] : throw FormatException('Missing required property')),
+        tradeful: (json.containsKey("tradeful") ? json["tradeful"] : throw FormatException('Missing required property')),
+        unriveting: (json.containsKey("unriveting") ? json["unriveting"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -416,7 +416,7 @@ class CimeliaClass {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -586,26 +586,26 @@ class CredulityClass {
     });
 
     factory CredulityClass.fromJson(Map<String, dynamic> json) => CredulityClass(
-        ammonolytic: json["ammonolytic"],
-        bushmaster: json["bushmaster"],
-        considering: json["considering"],
-        consuetudinary: json["consuetudinary"],
-        embarras: json["embarras"],
-        fineness: json["fineness"],
-        flaithship: json["flaithship"],
-        flavia: json["Flavia"],
-        gruffly: json["gruffly"],
-        hedychium: json["Hedychium"],
-        leadwort: json["leadwort"],
-        overseriously: json["overseriously"],
-        parabola: json["parabola"],
-        pectinatodenticulate: json["pectinatodenticulate"],
-        popean: json["Popean"],
-        pornocrat: json["pornocrat"],
-        quadrisect: json["quadrisect"],
-        seriality: json["seriality"],
-        vamphorn: json["vamphorn"],
-        wharp: json["wharp"],
+        ammonolytic: (json.containsKey("ammonolytic") ? json["ammonolytic"] : throw FormatException('Missing required property')),
+        bushmaster: (json.containsKey("bushmaster") ? json["bushmaster"] : throw FormatException('Missing required property')),
+        considering: (json.containsKey("considering") ? json["considering"] : throw FormatException('Missing required property')),
+        consuetudinary: (json.containsKey("consuetudinary") ? json["consuetudinary"] : throw FormatException('Missing required property')),
+        embarras: (json.containsKey("embarras") ? json["embarras"] : throw FormatException('Missing required property')),
+        fineness: (json.containsKey("fineness") ? json["fineness"] : throw FormatException('Missing required property')),
+        flaithship: (json.containsKey("flaithship") ? json["flaithship"] : throw FormatException('Missing required property')),
+        flavia: (json.containsKey("Flavia") ? json["Flavia"] : throw FormatException('Missing required property')),
+        gruffly: (json.containsKey("gruffly") ? json["gruffly"] : throw FormatException('Missing required property')),
+        hedychium: (json.containsKey("Hedychium") ? json["Hedychium"] : throw FormatException('Missing required property')),
+        leadwort: (json.containsKey("leadwort") ? json["leadwort"] : throw FormatException('Missing required property')),
+        overseriously: (json.containsKey("overseriously") ? json["overseriously"] : throw FormatException('Missing required property')),
+        parabola: (json.containsKey("parabola") ? json["parabola"] : throw FormatException('Missing required property')),
+        pectinatodenticulate: (json.containsKey("pectinatodenticulate") ? json["pectinatodenticulate"] : throw FormatException('Missing required property')),
+        popean: (json.containsKey("Popean") ? json["Popean"] : throw FormatException('Missing required property')),
+        pornocrat: (json.containsKey("pornocrat") ? json["pornocrat"] : throw FormatException('Missing required property')),
+        quadrisect: (json.containsKey("quadrisect") ? json["quadrisect"] : throw FormatException('Missing required property')),
+        seriality: (json.containsKey("seriality") ? json["seriality"] : throw FormatException('Missing required property')),
+        vamphorn: (json.containsKey("vamphorn") ? json["vamphorn"] : throw FormatException('Missing required property')),
+        wharp: (json.containsKey("wharp") ? json["wharp"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -678,26 +678,26 @@ class DeruralizeClass {
     });
 
     factory DeruralizeClass.fromJson(Map<String, dynamic> json) => DeruralizeClass(
-        bockerel: json["bockerel"],
-        boulder: json["boulder"],
-        churrus: json["churrus"],
-        counterdigged: json["counterdigged"],
-        dialogite: json["dialogite"],
-        digenic: json["digenic"],
-        dunbird: json["dunbird"],
-        ergatogyne: json["ergatogyne"],
-        fiendful: json["fiendful"],
-        jackrod: json["jackrod"],
-        jehovistic: json["Jehovistic"],
-        paninean: json["Paninean"],
-        panther: json["panther"],
-        placentigerous: json["placentigerous"],
-        romney: json["Romney"],
-        sparm: json["sparm"],
-        tocsin: json["tocsin"],
-        unnicked: json["unnicked"],
-        unstavable: json["unstavable"],
-        windfirm: json["windfirm"],
+        bockerel: (json.containsKey("bockerel") ? json["bockerel"] : throw FormatException('Missing required property')),
+        boulder: (json.containsKey("boulder") ? json["boulder"] : throw FormatException('Missing required property')),
+        churrus: (json.containsKey("churrus") ? json["churrus"] : throw FormatException('Missing required property')),
+        counterdigged: (json.containsKey("counterdigged") ? json["counterdigged"] : throw FormatException('Missing required property')),
+        dialogite: (json.containsKey("dialogite") ? json["dialogite"] : throw FormatException('Missing required property')),
+        digenic: (json.containsKey("digenic") ? json["digenic"] : throw FormatException('Missing required property')),
+        dunbird: (json.containsKey("dunbird") ? json["dunbird"] : throw FormatException('Missing required property')),
+        ergatogyne: (json.containsKey("ergatogyne") ? json["ergatogyne"] : throw FormatException('Missing required property')),
+        fiendful: (json.containsKey("fiendful") ? json["fiendful"] : throw FormatException('Missing required property')),
+        jackrod: (json.containsKey("jackrod") ? json["jackrod"] : throw FormatException('Missing required property')),
+        jehovistic: (json.containsKey("Jehovistic") ? json["Jehovistic"] : throw FormatException('Missing required property')),
+        paninean: (json.containsKey("Paninean") ? json["Paninean"] : throw FormatException('Missing required property')),
+        panther: (json.containsKey("panther") ? json["panther"] : throw FormatException('Missing required property')),
+        placentigerous: (json.containsKey("placentigerous") ? json["placentigerous"] : throw FormatException('Missing required property')),
+        romney: (json.containsKey("Romney") ? json["Romney"] : throw FormatException('Missing required property')),
+        sparm: (json.containsKey("sparm") ? json["sparm"] : throw FormatException('Missing required property')),
+        tocsin: (json.containsKey("tocsin") ? json["tocsin"] : throw FormatException('Missing required property')),
+        unnicked: (json.containsKey("unnicked") ? json["unnicked"] : throw FormatException('Missing required property')),
+        unstavable: (json.containsKey("unstavable") ? json["unstavable"] : throw FormatException('Missing required property')),
+        windfirm: (json.containsKey("windfirm") ? json["windfirm"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -770,26 +770,26 @@ class DiaereseClass {
     });
 
     factory DiaereseClass.fromJson(Map<String, dynamic> json) => DiaereseClass(
-        amoreuxia: json["Amoreuxia"],
-        ani: json["ani"],
-        bernicle: json["bernicle"],
-        blackwasher: json["blackwasher"],
-        blowhard: json["blowhard"],
-        broma: json["broma"],
-        closecross: json["closecross"],
-        congregationalism: json["congregationalism"],
-        grayly: json["grayly"],
-        historically: json["historically"],
-        hoast: json["hoast"],
-        irretentive: json["irretentive"],
-        parcener: json["parcener"],
-        pedder: json["pedder"],
-        pseudoanatomic: json["pseudoanatomic"],
-        rhizocarpian: json["rhizocarpian"],
-        samel: json["samel"],
-        silker: json["silker"],
-        subdentated: json["subdentated"],
-        subobscure: json["subobscure"],
+        amoreuxia: (json.containsKey("Amoreuxia") ? json["Amoreuxia"] : throw FormatException('Missing required property')),
+        ani: (json.containsKey("ani") ? json["ani"] : throw FormatException('Missing required property')),
+        bernicle: (json.containsKey("bernicle") ? json["bernicle"] : throw FormatException('Missing required property')),
+        blackwasher: (json.containsKey("blackwasher") ? json["blackwasher"] : throw FormatException('Missing required property')),
+        blowhard: (json.containsKey("blowhard") ? json["blowhard"] : throw FormatException('Missing required property')),
+        broma: (json.containsKey("broma") ? json["broma"] : throw FormatException('Missing required property')),
+        closecross: (json.containsKey("closecross") ? json["closecross"] : throw FormatException('Missing required property')),
+        congregationalism: (json.containsKey("congregationalism") ? json["congregationalism"] : throw FormatException('Missing required property')),
+        grayly: (json.containsKey("grayly") ? json["grayly"] : throw FormatException('Missing required property')),
+        historically: (json.containsKey("historically") ? json["historically"] : throw FormatException('Missing required property')),
+        hoast: (json.containsKey("hoast") ? json["hoast"] : throw FormatException('Missing required property')),
+        irretentive: (json.containsKey("irretentive") ? json["irretentive"] : throw FormatException('Missing required property')),
+        parcener: (json.containsKey("parcener") ? json["parcener"] : throw FormatException('Missing required property')),
+        pedder: (json.containsKey("pedder") ? json["pedder"] : throw FormatException('Missing required property')),
+        pseudoanatomic: (json.containsKey("pseudoanatomic") ? json["pseudoanatomic"] : throw FormatException('Missing required property')),
+        rhizocarpian: (json.containsKey("rhizocarpian") ? json["rhizocarpian"] : throw FormatException('Missing required property')),
+        samel: (json.containsKey("samel") ? json["samel"] : throw FormatException('Missing required property')),
+        silker: (json.containsKey("silker") ? json["silker"] : throw FormatException('Missing required property')),
+        subdentated: (json.containsKey("subdentated") ? json["subdentated"] : throw FormatException('Missing required property')),
+        subobscure: (json.containsKey("subobscure") ? json["subobscure"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -862,26 +862,26 @@ class Encrust {
     });
 
     factory Encrust.fromJson(Map<String, dynamic> json) => Encrust(
-        comradely: json["comradely"],
-        diacanthous: json["diacanthous"],
-        feminineness: json["feminineness"],
-        gossamered: json["gossamered"],
-        hibernia: json["Hibernia"],
-        hibiscus: json["Hibiscus"],
-        lepidosauria: json["Lepidosauria"],
-        lollingly: json["lollingly"],
-        manager: json["manager"],
-        mechanic: json["mechanic"],
-        overminuteness: json["overminuteness"],
-        papelonne: json["papelonne"],
-        plebification: json["plebification"],
-        pugmiller: json["pugmiller"],
-        recoveror: json["recoveror"],
-        spermatoblastic: json["spermatoblastic"],
-        syllidae: json["Syllidae"],
-        ungyved: json["ungyved"],
-        whirlabout: json["whirlabout"],
-        woodenware: json["woodenware"],
+        comradely: (json.containsKey("comradely") ? json["comradely"] : throw FormatException('Missing required property')),
+        diacanthous: (json.containsKey("diacanthous") ? json["diacanthous"] : throw FormatException('Missing required property')),
+        feminineness: (json.containsKey("feminineness") ? json["feminineness"] : throw FormatException('Missing required property')),
+        gossamered: (json.containsKey("gossamered") ? json["gossamered"] : throw FormatException('Missing required property')),
+        hibernia: (json.containsKey("Hibernia") ? json["Hibernia"] : throw FormatException('Missing required property')),
+        hibiscus: (json.containsKey("Hibiscus") ? json["Hibiscus"] : throw FormatException('Missing required property')),
+        lepidosauria: (json.containsKey("Lepidosauria") ? json["Lepidosauria"] : throw FormatException('Missing required property')),
+        lollingly: (json.containsKey("lollingly") ? json["lollingly"] : throw FormatException('Missing required property')),
+        manager: (json.containsKey("manager") ? json["manager"] : throw FormatException('Missing required property')),
+        mechanic: (json.containsKey("mechanic") ? json["mechanic"] : throw FormatException('Missing required property')),
+        overminuteness: (json.containsKey("overminuteness") ? json["overminuteness"] : throw FormatException('Missing required property')),
+        papelonne: (json.containsKey("papelonne") ? json["papelonne"] : throw FormatException('Missing required property')),
+        plebification: (json.containsKey("plebification") ? json["plebification"] : throw FormatException('Missing required property')),
+        pugmiller: (json.containsKey("pugmiller") ? json["pugmiller"] : throw FormatException('Missing required property')),
+        recoveror: (json.containsKey("recoveror") ? json["recoveror"] : throw FormatException('Missing required property')),
+        spermatoblastic: (json.containsKey("spermatoblastic") ? json["spermatoblastic"] : throw FormatException('Missing required property')),
+        syllidae: (json.containsKey("Syllidae") ? json["Syllidae"] : throw FormatException('Missing required property')),
+        ungyved: (json.containsKey("ungyved") ? json["ungyved"] : throw FormatException('Missing required property')),
+        whirlabout: (json.containsKey("whirlabout") ? json["whirlabout"] : throw FormatException('Missing required property')),
+        woodenware: (json.containsKey("woodenware") ? json["woodenware"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -954,26 +954,26 @@ class FagginglyClass {
     });
 
     factory FagginglyClass.fromJson(Map<String, dynamic> json) => FagginglyClass(
-        abranchian: json["abranchian"],
-        aculeiform: json["aculeiform"],
-        adiaphoristic: json["adiaphoristic"],
-        adoptionism: json["adoptionism"],
-        anglic: json["Anglic"],
-        antrotomy: json["antrotomy"],
-        coerciveness: json["coerciveness"],
-        decorist: json["decorist"],
-        duckhood: json["duckhood"],
-        heteromeri: json["Heteromeri"],
-        hypochnose: json["hypochnose"],
-        lochage: json["lochage"],
-        melee: json["melee"],
-        nonconformitant: json["nonconformitant"],
-        poinsettia: json["Poinsettia"],
-        putatively: json["putatively"],
-        semivolatile: json["semivolatile"],
-        soleas: json["soleas"],
-        unfastenable: json["unfastenable"],
-        unmillinered: json["unmillinered"],
+        abranchian: (json.containsKey("abranchian") ? json["abranchian"] : throw FormatException('Missing required property')),
+        aculeiform: (json.containsKey("aculeiform") ? json["aculeiform"] : throw FormatException('Missing required property')),
+        adiaphoristic: (json.containsKey("adiaphoristic") ? json["adiaphoristic"] : throw FormatException('Missing required property')),
+        adoptionism: (json.containsKey("adoptionism") ? json["adoptionism"] : throw FormatException('Missing required property')),
+        anglic: (json.containsKey("Anglic") ? json["Anglic"] : throw FormatException('Missing required property')),
+        antrotomy: (json.containsKey("antrotomy") ? json["antrotomy"] : throw FormatException('Missing required property')),
+        coerciveness: (json.containsKey("coerciveness") ? json["coerciveness"] : throw FormatException('Missing required property')),
+        decorist: (json.containsKey("decorist") ? json["decorist"] : throw FormatException('Missing required property')),
+        duckhood: (json.containsKey("duckhood") ? json["duckhood"] : throw FormatException('Missing required property')),
+        heteromeri: (json.containsKey("Heteromeri") ? json["Heteromeri"] : throw FormatException('Missing required property')),
+        hypochnose: (json.containsKey("hypochnose") ? json["hypochnose"] : throw FormatException('Missing required property')),
+        lochage: (json.containsKey("lochage") ? json["lochage"] : throw FormatException('Missing required property')),
+        melee: (json.containsKey("melee") ? json["melee"] : throw FormatException('Missing required property')),
+        nonconformitant: (json.containsKey("nonconformitant") ? json["nonconformitant"] : throw FormatException('Missing required property')),
+        poinsettia: (json.containsKey("Poinsettia") ? json["Poinsettia"] : throw FormatException('Missing required property')),
+        putatively: (json.containsKey("putatively") ? json["putatively"] : throw FormatException('Missing required property')),
+        semivolatile: (json.containsKey("semivolatile") ? json["semivolatile"] : throw FormatException('Missing required property')),
+        soleas: (json.containsKey("soleas") ? json["soleas"] : throw FormatException('Missing required property')),
+        unfastenable: (json.containsKey("unfastenable") ? json["unfastenable"] : throw FormatException('Missing required property')),
+        unmillinered: (json.containsKey("unmillinered") ? json["unmillinered"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1046,26 +1046,26 @@ class FenkClass {
     });
 
     factory FenkClass.fromJson(Map<String, dynamic> json) => FenkClass(
-        apoise: json["apoise"],
-        astronomize: json["astronomize"],
-        cockhorse: json["cockhorse"],
-        copular: json["copular"],
-        dagomba: json["Dagomba"],
-        draffy: json["draffy"],
-        foreigner: json["foreigner"],
-        guyandot: json["Guyandot"],
-        neurogliosis: json["neurogliosis"],
-        osmious: json["osmious"],
-        palpitate: json["palpitate"],
-        rebukeable: json["rebukeable"],
-        reinwardtia: json["Reinwardtia"],
-        reservatory: json["reservatory"],
-        scalt: json["scalt"],
-        scripturalize: json["scripturalize"],
-        tintometer: json["tintometer"],
-        tritoness: json["Tritoness"],
-        undergrade: json["undergrade"],
-        undermountain: json["undermountain"],
+        apoise: (json.containsKey("apoise") ? json["apoise"] : throw FormatException('Missing required property')),
+        astronomize: (json.containsKey("astronomize") ? json["astronomize"] : throw FormatException('Missing required property')),
+        cockhorse: (json.containsKey("cockhorse") ? json["cockhorse"] : throw FormatException('Missing required property')),
+        copular: (json.containsKey("copular") ? json["copular"] : throw FormatException('Missing required property')),
+        dagomba: (json.containsKey("Dagomba") ? json["Dagomba"] : throw FormatException('Missing required property')),
+        draffy: (json.containsKey("draffy") ? json["draffy"] : throw FormatException('Missing required property')),
+        foreigner: (json.containsKey("foreigner") ? json["foreigner"] : throw FormatException('Missing required property')),
+        guyandot: (json.containsKey("Guyandot") ? json["Guyandot"] : throw FormatException('Missing required property')),
+        neurogliosis: (json.containsKey("neurogliosis") ? json["neurogliosis"] : throw FormatException('Missing required property')),
+        osmious: (json.containsKey("osmious") ? json["osmious"] : throw FormatException('Missing required property')),
+        palpitate: (json.containsKey("palpitate") ? json["palpitate"] : throw FormatException('Missing required property')),
+        rebukeable: (json.containsKey("rebukeable") ? json["rebukeable"] : throw FormatException('Missing required property')),
+        reinwardtia: (json.containsKey("Reinwardtia") ? json["Reinwardtia"] : throw FormatException('Missing required property')),
+        reservatory: (json.containsKey("reservatory") ? json["reservatory"] : throw FormatException('Missing required property')),
+        scalt: (json.containsKey("scalt") ? json["scalt"] : throw FormatException('Missing required property')),
+        scripturalize: (json.containsKey("scripturalize") ? json["scripturalize"] : throw FormatException('Missing required property')),
+        tintometer: (json.containsKey("tintometer") ? json["tintometer"] : throw FormatException('Missing required property')),
+        tritoness: (json.containsKey("Tritoness") ? json["Tritoness"] : throw FormatException('Missing required property')),
+        undergrade: (json.containsKey("undergrade") ? json["undergrade"] : throw FormatException('Missing required property')),
+        undermountain: (json.containsKey("undermountain") ? json["undermountain"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1138,26 +1138,26 @@ class FlagmakingClass {
     });
 
     factory FlagmakingClass.fromJson(Map<String, dynamic> json) => FlagmakingClass(
-        albarco: json["albarco"],
-        bunodonta: json["Bunodonta"],
-        hornify: json["hornify"],
-        hydrocorisae: json["Hydrocorisae"],
-        hypoglossus: json["hypoglossus"],
-        inexpiably: json["inexpiably"],
-        ingratitude: json["ingratitude"],
-        ladyfly: json["ladyfly"],
-        medicament: json["medicament"],
-        monogrammatic: json["monogrammatic"],
-        nobbut: json["nobbut"],
-        notacanthidae: json["Notacanthidae"],
-        polyplacophore: json["polyplacophore"],
-        proexercise: json["proexercise"],
-        protoplast: json["protoplast"],
-        puzzling: json["puzzling"],
-        splanchnoskeleton: json["splanchnoskeleton"],
-        unloveliness: json["unloveliness"],
-        unquarantined: json["unquarantined"],
-        unrenounceable: json["unrenounceable"],
+        albarco: (json.containsKey("albarco") ? json["albarco"] : throw FormatException('Missing required property')),
+        bunodonta: (json.containsKey("Bunodonta") ? json["Bunodonta"] : throw FormatException('Missing required property')),
+        hornify: (json.containsKey("hornify") ? json["hornify"] : throw FormatException('Missing required property')),
+        hydrocorisae: (json.containsKey("Hydrocorisae") ? json["Hydrocorisae"] : throw FormatException('Missing required property')),
+        hypoglossus: (json.containsKey("hypoglossus") ? json["hypoglossus"] : throw FormatException('Missing required property')),
+        inexpiably: (json.containsKey("inexpiably") ? json["inexpiably"] : throw FormatException('Missing required property')),
+        ingratitude: (json.containsKey("ingratitude") ? json["ingratitude"] : throw FormatException('Missing required property')),
+        ladyfly: (json.containsKey("ladyfly") ? json["ladyfly"] : throw FormatException('Missing required property')),
+        medicament: (json.containsKey("medicament") ? json["medicament"] : throw FormatException('Missing required property')),
+        monogrammatic: (json.containsKey("monogrammatic") ? json["monogrammatic"] : throw FormatException('Missing required property')),
+        nobbut: (json.containsKey("nobbut") ? json["nobbut"] : throw FormatException('Missing required property')),
+        notacanthidae: (json.containsKey("Notacanthidae") ? json["Notacanthidae"] : throw FormatException('Missing required property')),
+        polyplacophore: (json.containsKey("polyplacophore") ? json["polyplacophore"] : throw FormatException('Missing required property')),
+        proexercise: (json.containsKey("proexercise") ? json["proexercise"] : throw FormatException('Missing required property')),
+        protoplast: (json.containsKey("protoplast") ? json["protoplast"] : throw FormatException('Missing required property')),
+        puzzling: (json.containsKey("puzzling") ? json["puzzling"] : throw FormatException('Missing required property')),
+        splanchnoskeleton: (json.containsKey("splanchnoskeleton") ? json["splanchnoskeleton"] : throw FormatException('Missing required property')),
+        unloveliness: (json.containsKey("unloveliness") ? json["unloveliness"] : throw FormatException('Missing required property')),
+        unquarantined: (json.containsKey("unquarantined") ? json["unquarantined"] : throw FormatException('Missing required property')),
+        unrenounceable: (json.containsKey("unrenounceable") ? json["unrenounceable"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1316,7 +1316,7 @@ class Interacinar {
         benefactorship: json["benefactorship"],
         triseriatim: json["triseriatim"],
         tubbing: json["tubbing"],
-        untrimmed: json["untrimmed"],
+        untrimmed: (json.containsKey("untrimmed") ? json["untrimmed"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations2.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations2.json/default/TopLevel.dart
index 4af4d1e..5edf426 100644
--- a/base/dart/test/inputs/json/priority/combinations2.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations2.json/default/TopLevel.dart
@@ -116,7 +116,7 @@ class TopLevel {
         andriana: List<String?>.from(json["Andriana"].map((x) => x)),
         ankee: List<dynamic>.from(json["ankee"].map((x) => x)),
         annihilator: List<Map<String, int?>?>.from(json["annihilator"].map((x) => x == null ? null : Map.from(x!).map((k, v) => MapEntry<String, int?>(k, v)))),
-        annulose: json["annulose"],
+        annulose: (json.containsKey("annulose") ? json["annulose"] : throw FormatException('Missing required property')),
         ansarie: List<dynamic>.from(json["Ansarie"].map((x) => x)),
         aphasia: List<dynamic>.from(json["aphasia"].map((x) => x)),
         asprawl: List<dynamic>.from(json["asprawl"].map((x) => x)),
@@ -246,26 +246,26 @@ class AlleviateClass {
     });
 
     factory AlleviateClass.fromJson(Map<String, dynamic> json) => AlleviateClass(
-        apriori: json["apriori"],
-        beggarer: json["beggarer"],
-        brokenheartedly: json["brokenheartedly"],
-        debilitation: json["debilitation"],
-        frike: json["frike"],
-        gastrolith: json["gastrolith"],
-        hulsean: json["Hulsean"],
-        orthocentric: json["orthocentric"],
-        petaly: json["petaly"],
-        probudgeting: json["probudgeting"],
-        reacquire: json["reacquire"],
-        scow: json["scow"],
-        shutoff: json["shutoff"],
-        subcontiguous: json["subcontiguous"],
-        suffumigate: json["suffumigate"],
-        transformable: json["transformable"],
-        uncoroneted: json["uncoroneted"],
-        unparking: json["unparking"],
-        unvarnishedness: json["unvarnishedness"],
-        wherewithal: json["wherewithal"],
+        apriori: (json.containsKey("apriori") ? json["apriori"] : throw FormatException('Missing required property')),
+        beggarer: (json.containsKey("beggarer") ? json["beggarer"] : throw FormatException('Missing required property')),
+        brokenheartedly: (json.containsKey("brokenheartedly") ? json["brokenheartedly"] : throw FormatException('Missing required property')),
+        debilitation: (json.containsKey("debilitation") ? json["debilitation"] : throw FormatException('Missing required property')),
+        frike: (json.containsKey("frike") ? json["frike"] : throw FormatException('Missing required property')),
+        gastrolith: (json.containsKey("gastrolith") ? json["gastrolith"] : throw FormatException('Missing required property')),
+        hulsean: (json.containsKey("Hulsean") ? json["Hulsean"] : throw FormatException('Missing required property')),
+        orthocentric: (json.containsKey("orthocentric") ? json["orthocentric"] : throw FormatException('Missing required property')),
+        petaly: (json.containsKey("petaly") ? json["petaly"] : throw FormatException('Missing required property')),
+        probudgeting: (json.containsKey("probudgeting") ? json["probudgeting"] : throw FormatException('Missing required property')),
+        reacquire: (json.containsKey("reacquire") ? json["reacquire"] : throw FormatException('Missing required property')),
+        scow: (json.containsKey("scow") ? json["scow"] : throw FormatException('Missing required property')),
+        shutoff: (json.containsKey("shutoff") ? json["shutoff"] : throw FormatException('Missing required property')),
+        subcontiguous: (json.containsKey("subcontiguous") ? json["subcontiguous"] : throw FormatException('Missing required property')),
+        suffumigate: (json.containsKey("suffumigate") ? json["suffumigate"] : throw FormatException('Missing required property')),
+        transformable: (json.containsKey("transformable") ? json["transformable"] : throw FormatException('Missing required property')),
+        uncoroneted: (json.containsKey("uncoroneted") ? json["uncoroneted"] : throw FormatException('Missing required property')),
+        unparking: (json.containsKey("unparking") ? json["unparking"] : throw FormatException('Missing required property')),
+        unvarnishedness: (json.containsKey("unvarnishedness") ? json["unvarnishedness"] : throw FormatException('Missing required property')),
+        wherewithal: (json.containsKey("wherewithal") ? json["wherewithal"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -312,7 +312,7 @@ class Rebecca {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -482,26 +482,26 @@ class AnkeeClass {
     });
 
     factory AnkeeClass.fromJson(Map<String, dynamic> json) => AnkeeClass(
-        anomoean: json["Anomoean"],
-        barleyhood: json["barleyhood"],
-        befriender: json["befriender"],
-        brutishness: json["brutishness"],
-        cephalalgy: json["cephalalgy"],
-        cirurgian: json["cirurgian"],
-        conventionally: json["conventionally"],
-        jackshay: json["jackshay"],
-        milammeter: json["milammeter"],
-        naja: json["Naja"],
-        ombrological: json["ombrological"],
-        phonasthenia: json["phonasthenia"],
-        retrievableness: json["retrievableness"],
-        snakily: json["snakily"],
-        swot: json["swot"],
-        tartlet: json["tartlet"],
-        thiofuran: json["thiofuran"],
-        tracheophone: json["tracheophone"],
-        tuglike: json["tuglike"],
-        unscratchingly: json["unscratchingly"],
+        anomoean: (json.containsKey("Anomoean") ? json["Anomoean"] : throw FormatException('Missing required property')),
+        barleyhood: (json.containsKey("barleyhood") ? json["barleyhood"] : throw FormatException('Missing required property')),
+        befriender: (json.containsKey("befriender") ? json["befriender"] : throw FormatException('Missing required property')),
+        brutishness: (json.containsKey("brutishness") ? json["brutishness"] : throw FormatException('Missing required property')),
+        cephalalgy: (json.containsKey("cephalalgy") ? json["cephalalgy"] : throw FormatException('Missing required property')),
+        cirurgian: (json.containsKey("cirurgian") ? json["cirurgian"] : throw FormatException('Missing required property')),
+        conventionally: (json.containsKey("conventionally") ? json["conventionally"] : throw FormatException('Missing required property')),
+        jackshay: (json.containsKey("jackshay") ? json["jackshay"] : throw FormatException('Missing required property')),
+        milammeter: (json.containsKey("milammeter") ? json["milammeter"] : throw FormatException('Missing required property')),
+        naja: (json.containsKey("Naja") ? json["Naja"] : throw FormatException('Missing required property')),
+        ombrological: (json.containsKey("ombrological") ? json["ombrological"] : throw FormatException('Missing required property')),
+        phonasthenia: (json.containsKey("phonasthenia") ? json["phonasthenia"] : throw FormatException('Missing required property')),
+        retrievableness: (json.containsKey("retrievableness") ? json["retrievableness"] : throw FormatException('Missing required property')),
+        snakily: (json.containsKey("snakily") ? json["snakily"] : throw FormatException('Missing required property')),
+        swot: (json.containsKey("swot") ? json["swot"] : throw FormatException('Missing required property')),
+        tartlet: (json.containsKey("tartlet") ? json["tartlet"] : throw FormatException('Missing required property')),
+        thiofuran: (json.containsKey("thiofuran") ? json["thiofuran"] : throw FormatException('Missing required property')),
+        tracheophone: (json.containsKey("tracheophone") ? json["tracheophone"] : throw FormatException('Missing required property')),
+        tuglike: (json.containsKey("tuglike") ? json["tuglike"] : throw FormatException('Missing required property')),
+        unscratchingly: (json.containsKey("unscratchingly") ? json["unscratchingly"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -574,26 +574,26 @@ class AnsarieClass {
     });
 
     factory AnsarieClass.fromJson(Map<String, dynamic> json) => AnsarieClass(
-        accension: json["accension"],
-        alida: json["Alida"],
-        asteria: json["asteria"],
-        beriberic: json["beriberic"],
-        edgebone: json["edgebone"],
-        gastrodialysis: json["gastrodialysis"],
-        geographic: json["geographic"],
-        ictonyx: json["Ictonyx"],
-        metrocele: json["metrocele"],
-        misgraft: json["misgraft"],
-        monteith: json["monteith"],
-        notcher: json["notcher"],
-        prorestriction: json["prorestriction"],
-        ramist: json["Ramist"],
-        throatlet: json["throatlet"],
-        unfair: json["unfair"],
-        unsynonymous: json["unsynonymous"],
-        water: json["water"],
-        zestfully: json["zestfully"],
-        zincic: json["zincic"],
+        accension: (json.containsKey("accension") ? json["accension"] : throw FormatException('Missing required property')),
+        alida: (json.containsKey("Alida") ? json["Alida"] : throw FormatException('Missing required property')),
+        asteria: (json.containsKey("asteria") ? json["asteria"] : throw FormatException('Missing required property')),
+        beriberic: (json.containsKey("beriberic") ? json["beriberic"] : throw FormatException('Missing required property')),
+        edgebone: (json.containsKey("edgebone") ? json["edgebone"] : throw FormatException('Missing required property')),
+        gastrodialysis: (json.containsKey("gastrodialysis") ? json["gastrodialysis"] : throw FormatException('Missing required property')),
+        geographic: (json.containsKey("geographic") ? json["geographic"] : throw FormatException('Missing required property')),
+        ictonyx: (json.containsKey("Ictonyx") ? json["Ictonyx"] : throw FormatException('Missing required property')),
+        metrocele: (json.containsKey("metrocele") ? json["metrocele"] : throw FormatException('Missing required property')),
+        misgraft: (json.containsKey("misgraft") ? json["misgraft"] : throw FormatException('Missing required property')),
+        monteith: (json.containsKey("monteith") ? json["monteith"] : throw FormatException('Missing required property')),
+        notcher: (json.containsKey("notcher") ? json["notcher"] : throw FormatException('Missing required property')),
+        prorestriction: (json.containsKey("prorestriction") ? json["prorestriction"] : throw FormatException('Missing required property')),
+        ramist: (json.containsKey("Ramist") ? json["Ramist"] : throw FormatException('Missing required property')),
+        throatlet: (json.containsKey("throatlet") ? json["throatlet"] : throw FormatException('Missing required property')),
+        unfair: (json.containsKey("unfair") ? json["unfair"] : throw FormatException('Missing required property')),
+        unsynonymous: (json.containsKey("unsynonymous") ? json["unsynonymous"] : throw FormatException('Missing required property')),
+        water: (json.containsKey("water") ? json["water"] : throw FormatException('Missing required property')),
+        zestfully: (json.containsKey("zestfully") ? json["zestfully"] : throw FormatException('Missing required property')),
+        zincic: (json.containsKey("zincic") ? json["zincic"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -666,26 +666,26 @@ class ChytridiaceaeClass {
     });
 
     factory ChytridiaceaeClass.fromJson(Map<String, dynamic> json) => ChytridiaceaeClass(
-        batidaceae: json["Batidaceae"],
-        brechites: json["Brechites"],
-        codespairer: json["codespairer"],
-        emery: json["Emery"],
-        enervative: json["enervative"],
-        excriminate: json["excriminate"],
-        goshenite: json["goshenite"],
-        grime: json["grime"],
-        gritten: json["gritten"],
-        hectorly: json["hectorly"],
-        intermediation: json["intermediation"],
-        meeterly: json["meeterly"],
-        narraganset: json["Narraganset"],
-        onymatic: json["onymatic"],
-        paddlecock: json["paddlecock"],
-        thana: json["thana"],
-        thornily: json["thornily"],
-        uckia: json["uckia"],
-        unmettle: json["unmettle"],
-        vorticellid: json["vorticellid"],
+        batidaceae: (json.containsKey("Batidaceae") ? json["Batidaceae"] : throw FormatException('Missing required property')),
+        brechites: (json.containsKey("Brechites") ? json["Brechites"] : throw FormatException('Missing required property')),
+        codespairer: (json.containsKey("codespairer") ? json["codespairer"] : throw FormatException('Missing required property')),
+        emery: (json.containsKey("Emery") ? json["Emery"] : throw FormatException('Missing required property')),
+        enervative: (json.containsKey("enervative") ? json["enervative"] : throw FormatException('Missing required property')),
+        excriminate: (json.containsKey("excriminate") ? json["excriminate"] : throw FormatException('Missing required property')),
+        goshenite: (json.containsKey("goshenite") ? json["goshenite"] : throw FormatException('Missing required property')),
+        grime: (json.containsKey("grime") ? json["grime"] : throw FormatException('Missing required property')),
+        gritten: (json.containsKey("gritten") ? json["gritten"] : throw FormatException('Missing required property')),
+        hectorly: (json.containsKey("hectorly") ? json["hectorly"] : throw FormatException('Missing required property')),
+        intermediation: (json.containsKey("intermediation") ? json["intermediation"] : throw FormatException('Missing required property')),
+        meeterly: (json.containsKey("meeterly") ? json["meeterly"] : throw FormatException('Missing required property')),
+        narraganset: (json.containsKey("Narraganset") ? json["Narraganset"] : throw FormatException('Missing required property')),
+        onymatic: (json.containsKey("onymatic") ? json["onymatic"] : throw FormatException('Missing required property')),
+        paddlecock: (json.containsKey("paddlecock") ? json["paddlecock"] : throw FormatException('Missing required property')),
+        thana: (json.containsKey("thana") ? json["thana"] : throw FormatException('Missing required property')),
+        thornily: (json.containsKey("thornily") ? json["thornily"] : throw FormatException('Missing required property')),
+        uckia: (json.containsKey("uckia") ? json["uckia"] : throw FormatException('Missing required property')),
+        unmettle: (json.containsKey("unmettle") ? json["unmettle"] : throw FormatException('Missing required property')),
+        vorticellid: (json.containsKey("vorticellid") ? json["vorticellid"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -870,26 +870,26 @@ class GryphosaurusClass {
     });
 
     factory GryphosaurusClass.fromJson(Map<String, dynamic> json) => GryphosaurusClass(
-        amissibility: json["amissibility"],
-        burushaski: json["Burushaski"],
-        citronin: json["citronin"],
-        coplaintiff: json["coplaintiff"],
-        disquisitionary: json["disquisitionary"],
-        enoplan: json["enoplan"],
-        faintness: json["faintness"],
-        hebetomy: json["hebetomy"],
-        islandry: json["islandry"],
-        lameduck: json["lameduck"],
-        overbattle: json["overbattle"],
-        overinterested: json["overinterested"],
-        phrenologic: json["phrenologic"],
-        rainband: json["rainband"],
-        shiningly: json["shiningly"],
-        stamineous: json["stamineous"],
-        subscapularis: json["subscapularis"],
-        tahami: json["Tahami"],
-        undaubed: json["undaubed"],
-        underntime: json["underntime"],
+        amissibility: (json.containsKey("amissibility") ? json["amissibility"] : throw FormatException('Missing required property')),
+        burushaski: (json.containsKey("Burushaski") ? json["Burushaski"] : throw FormatException('Missing required property')),
+        citronin: (json.containsKey("citronin") ? json["citronin"] : throw FormatException('Missing required property')),
+        coplaintiff: (json.containsKey("coplaintiff") ? json["coplaintiff"] : throw FormatException('Missing required property')),
+        disquisitionary: (json.containsKey("disquisitionary") ? json["disquisitionary"] : throw FormatException('Missing required property')),
+        enoplan: (json.containsKey("enoplan") ? json["enoplan"] : throw FormatException('Missing required property')),
+        faintness: (json.containsKey("faintness") ? json["faintness"] : throw FormatException('Missing required property')),
+        hebetomy: (json.containsKey("hebetomy") ? json["hebetomy"] : throw FormatException('Missing required property')),
+        islandry: (json.containsKey("islandry") ? json["islandry"] : throw FormatException('Missing required property')),
+        lameduck: (json.containsKey("lameduck") ? json["lameduck"] : throw FormatException('Missing required property')),
+        overbattle: (json.containsKey("overbattle") ? json["overbattle"] : throw FormatException('Missing required property')),
+        overinterested: (json.containsKey("overinterested") ? json["overinterested"] : throw FormatException('Missing required property')),
+        phrenologic: (json.containsKey("phrenologic") ? json["phrenologic"] : throw FormatException('Missing required property')),
+        rainband: (json.containsKey("rainband") ? json["rainband"] : throw FormatException('Missing required property')),
+        shiningly: (json.containsKey("shiningly") ? json["shiningly"] : throw FormatException('Missing required property')),
+        stamineous: (json.containsKey("stamineous") ? json["stamineous"] : throw FormatException('Missing required property')),
+        subscapularis: (json.containsKey("subscapularis") ? json["subscapularis"] : throw FormatException('Missing required property')),
+        tahami: (json.containsKey("Tahami") ? json["Tahami"] : throw FormatException('Missing required property')),
+        undaubed: (json.containsKey("undaubed") ? json["undaubed"] : throw FormatException('Missing required property')),
+        underntime: (json.containsKey("underntime") ? json["underntime"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1074,26 +1074,26 @@ class OskarClass {
     });
 
     factory OskarClass.fromJson(Map<String, dynamic> json) => OskarClass(
-        acrobates: json["Acrobates"],
-        beanshooter: json["beanshooter"],
-        bearhound: json["bearhound"],
-        cayuga: json["Cayuga"],
-        guarneri: json["guarneri"],
-        hypochondriacism: json["hypochondriacism"],
-        indication: json["indication"],
-        jaculative: json["jaculative"],
-        nagana: json["nagana"],
-        netherlandish: json["Netherlandish"],
-        noctivagous: json["noctivagous"],
-        nonphysiological: json["nonphysiological"],
-        praxis: json["praxis"],
-        provision: json["provision"],
-        subterhuman: json["subterhuman"],
-        sunlit: json["sunlit"],
-        syncraniate: json["syncraniate"],
-        teachment: json["teachment"],
-        unmutinous: json["unmutinous"],
-        unstoppable: json["unstoppable"],
+        acrobates: (json.containsKey("Acrobates") ? json["Acrobates"] : throw FormatException('Missing required property')),
+        beanshooter: (json.containsKey("beanshooter") ? json["beanshooter"] : throw FormatException('Missing required property')),
+        bearhound: (json.containsKey("bearhound") ? json["bearhound"] : throw FormatException('Missing required property')),
+        cayuga: (json.containsKey("Cayuga") ? json["Cayuga"] : throw FormatException('Missing required property')),
+        guarneri: (json.containsKey("guarneri") ? json["guarneri"] : throw FormatException('Missing required property')),
+        hypochondriacism: (json.containsKey("hypochondriacism") ? json["hypochondriacism"] : throw FormatException('Missing required property')),
+        indication: (json.containsKey("indication") ? json["indication"] : throw FormatException('Missing required property')),
+        jaculative: (json.containsKey("jaculative") ? json["jaculative"] : throw FormatException('Missing required property')),
+        nagana: (json.containsKey("nagana") ? json["nagana"] : throw FormatException('Missing required property')),
+        netherlandish: (json.containsKey("Netherlandish") ? json["Netherlandish"] : throw FormatException('Missing required property')),
+        noctivagous: (json.containsKey("noctivagous") ? json["noctivagous"] : throw FormatException('Missing required property')),
+        nonphysiological: (json.containsKey("nonphysiological") ? json["nonphysiological"] : throw FormatException('Missing required property')),
+        praxis: (json.containsKey("praxis") ? json["praxis"] : throw FormatException('Missing required property')),
+        provision: (json.containsKey("provision") ? json["provision"] : throw FormatException('Missing required property')),
+        subterhuman: (json.containsKey("subterhuman") ? json["subterhuman"] : throw FormatException('Missing required property')),
+        sunlit: (json.containsKey("sunlit") ? json["sunlit"] : throw FormatException('Missing required property')),
+        syncraniate: (json.containsKey("syncraniate") ? json["syncraniate"] : throw FormatException('Missing required property')),
+        teachment: (json.containsKey("teachment") ? json["teachment"] : throw FormatException('Missing required property')),
+        unmutinous: (json.containsKey("unmutinous") ? json["unmutinous"] : throw FormatException('Missing required property')),
+        unstoppable: (json.containsKey("unstoppable") ? json["unstoppable"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations2.json/final-props-false--58a791807e0c/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations2.json/final-props-false--58a791807e0c/TopLevel.dart
index e021409..30804de 100644
--- a/base/dart/test/inputs/json/priority/combinations2.json/final-props-false--58a791807e0c/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations2.json/final-props-false--58a791807e0c/TopLevel.dart
@@ -116,7 +116,7 @@ class TopLevel {
         andriana: List<String?>.from(json["Andriana"].map((x) => x)),
         ankee: List<dynamic>.from(json["ankee"].map((x) => x)),
         annihilator: List<Map<String, int?>?>.from(json["annihilator"].map((x) => x == null ? null : Map.from(x!).map((k, v) => MapEntry<String, int?>(k, v)))),
-        annulose: json["annulose"],
+        annulose: (json.containsKey("annulose") ? json["annulose"] : throw FormatException('Missing required property')),
         ansarie: List<dynamic>.from(json["Ansarie"].map((x) => x)),
         aphasia: List<dynamic>.from(json["aphasia"].map((x) => x)),
         asprawl: List<dynamic>.from(json["asprawl"].map((x) => x)),
@@ -246,26 +246,26 @@ class AlleviateClass {
     });
 
     factory AlleviateClass.fromJson(Map<String, dynamic> json) => AlleviateClass(
-        apriori: json["apriori"],
-        beggarer: json["beggarer"],
-        brokenheartedly: json["brokenheartedly"],
-        debilitation: json["debilitation"],
-        frike: json["frike"],
-        gastrolith: json["gastrolith"],
-        hulsean: json["Hulsean"],
-        orthocentric: json["orthocentric"],
-        petaly: json["petaly"],
-        probudgeting: json["probudgeting"],
-        reacquire: json["reacquire"],
-        scow: json["scow"],
-        shutoff: json["shutoff"],
-        subcontiguous: json["subcontiguous"],
-        suffumigate: json["suffumigate"],
-        transformable: json["transformable"],
-        uncoroneted: json["uncoroneted"],
-        unparking: json["unparking"],
-        unvarnishedness: json["unvarnishedness"],
-        wherewithal: json["wherewithal"],
+        apriori: (json.containsKey("apriori") ? json["apriori"] : throw FormatException('Missing required property')),
+        beggarer: (json.containsKey("beggarer") ? json["beggarer"] : throw FormatException('Missing required property')),
+        brokenheartedly: (json.containsKey("brokenheartedly") ? json["brokenheartedly"] : throw FormatException('Missing required property')),
+        debilitation: (json.containsKey("debilitation") ? json["debilitation"] : throw FormatException('Missing required property')),
+        frike: (json.containsKey("frike") ? json["frike"] : throw FormatException('Missing required property')),
+        gastrolith: (json.containsKey("gastrolith") ? json["gastrolith"] : throw FormatException('Missing required property')),
+        hulsean: (json.containsKey("Hulsean") ? json["Hulsean"] : throw FormatException('Missing required property')),
+        orthocentric: (json.containsKey("orthocentric") ? json["orthocentric"] : throw FormatException('Missing required property')),
+        petaly: (json.containsKey("petaly") ? json["petaly"] : throw FormatException('Missing required property')),
+        probudgeting: (json.containsKey("probudgeting") ? json["probudgeting"] : throw FormatException('Missing required property')),
+        reacquire: (json.containsKey("reacquire") ? json["reacquire"] : throw FormatException('Missing required property')),
+        scow: (json.containsKey("scow") ? json["scow"] : throw FormatException('Missing required property')),
+        shutoff: (json.containsKey("shutoff") ? json["shutoff"] : throw FormatException('Missing required property')),
+        subcontiguous: (json.containsKey("subcontiguous") ? json["subcontiguous"] : throw FormatException('Missing required property')),
+        suffumigate: (json.containsKey("suffumigate") ? json["suffumigate"] : throw FormatException('Missing required property')),
+        transformable: (json.containsKey("transformable") ? json["transformable"] : throw FormatException('Missing required property')),
+        uncoroneted: (json.containsKey("uncoroneted") ? json["uncoroneted"] : throw FormatException('Missing required property')),
+        unparking: (json.containsKey("unparking") ? json["unparking"] : throw FormatException('Missing required property')),
+        unvarnishedness: (json.containsKey("unvarnishedness") ? json["unvarnishedness"] : throw FormatException('Missing required property')),
+        wherewithal: (json.containsKey("wherewithal") ? json["wherewithal"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -312,7 +312,7 @@ class Rebecca {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -482,26 +482,26 @@ class AnkeeClass {
     });
 
     factory AnkeeClass.fromJson(Map<String, dynamic> json) => AnkeeClass(
-        anomoean: json["Anomoean"],
-        barleyhood: json["barleyhood"],
-        befriender: json["befriender"],
-        brutishness: json["brutishness"],
-        cephalalgy: json["cephalalgy"],
-        cirurgian: json["cirurgian"],
-        conventionally: json["conventionally"],
-        jackshay: json["jackshay"],
-        milammeter: json["milammeter"],
-        naja: json["Naja"],
-        ombrological: json["ombrological"],
-        phonasthenia: json["phonasthenia"],
-        retrievableness: json["retrievableness"],
-        snakily: json["snakily"],
-        swot: json["swot"],
-        tartlet: json["tartlet"],
-        thiofuran: json["thiofuran"],
-        tracheophone: json["tracheophone"],
-        tuglike: json["tuglike"],
-        unscratchingly: json["unscratchingly"],
+        anomoean: (json.containsKey("Anomoean") ? json["Anomoean"] : throw FormatException('Missing required property')),
+        barleyhood: (json.containsKey("barleyhood") ? json["barleyhood"] : throw FormatException('Missing required property')),
+        befriender: (json.containsKey("befriender") ? json["befriender"] : throw FormatException('Missing required property')),
+        brutishness: (json.containsKey("brutishness") ? json["brutishness"] : throw FormatException('Missing required property')),
+        cephalalgy: (json.containsKey("cephalalgy") ? json["cephalalgy"] : throw FormatException('Missing required property')),
+        cirurgian: (json.containsKey("cirurgian") ? json["cirurgian"] : throw FormatException('Missing required property')),
+        conventionally: (json.containsKey("conventionally") ? json["conventionally"] : throw FormatException('Missing required property')),
+        jackshay: (json.containsKey("jackshay") ? json["jackshay"] : throw FormatException('Missing required property')),
+        milammeter: (json.containsKey("milammeter") ? json["milammeter"] : throw FormatException('Missing required property')),
+        naja: (json.containsKey("Naja") ? json["Naja"] : throw FormatException('Missing required property')),
+        ombrological: (json.containsKey("ombrological") ? json["ombrological"] : throw FormatException('Missing required property')),
+        phonasthenia: (json.containsKey("phonasthenia") ? json["phonasthenia"] : throw FormatException('Missing required property')),
+        retrievableness: (json.containsKey("retrievableness") ? json["retrievableness"] : throw FormatException('Missing required property')),
+        snakily: (json.containsKey("snakily") ? json["snakily"] : throw FormatException('Missing required property')),
+        swot: (json.containsKey("swot") ? json["swot"] : throw FormatException('Missing required property')),
+        tartlet: (json.containsKey("tartlet") ? json["tartlet"] : throw FormatException('Missing required property')),
+        thiofuran: (json.containsKey("thiofuran") ? json["thiofuran"] : throw FormatException('Missing required property')),
+        tracheophone: (json.containsKey("tracheophone") ? json["tracheophone"] : throw FormatException('Missing required property')),
+        tuglike: (json.containsKey("tuglike") ? json["tuglike"] : throw FormatException('Missing required property')),
+        unscratchingly: (json.containsKey("unscratchingly") ? json["unscratchingly"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -574,26 +574,26 @@ class AnsarieClass {
     });
 
     factory AnsarieClass.fromJson(Map<String, dynamic> json) => AnsarieClass(
-        accension: json["accension"],
-        alida: json["Alida"],
-        asteria: json["asteria"],
-        beriberic: json["beriberic"],
-        edgebone: json["edgebone"],
-        gastrodialysis: json["gastrodialysis"],
-        geographic: json["geographic"],
-        ictonyx: json["Ictonyx"],
-        metrocele: json["metrocele"],
-        misgraft: json["misgraft"],
-        monteith: json["monteith"],
-        notcher: json["notcher"],
-        prorestriction: json["prorestriction"],
-        ramist: json["Ramist"],
-        throatlet: json["throatlet"],
-        unfair: json["unfair"],
-        unsynonymous: json["unsynonymous"],
-        water: json["water"],
-        zestfully: json["zestfully"],
-        zincic: json["zincic"],
+        accension: (json.containsKey("accension") ? json["accension"] : throw FormatException('Missing required property')),
+        alida: (json.containsKey("Alida") ? json["Alida"] : throw FormatException('Missing required property')),
+        asteria: (json.containsKey("asteria") ? json["asteria"] : throw FormatException('Missing required property')),
+        beriberic: (json.containsKey("beriberic") ? json["beriberic"] : throw FormatException('Missing required property')),
+        edgebone: (json.containsKey("edgebone") ? json["edgebone"] : throw FormatException('Missing required property')),
+        gastrodialysis: (json.containsKey("gastrodialysis") ? json["gastrodialysis"] : throw FormatException('Missing required property')),
+        geographic: (json.containsKey("geographic") ? json["geographic"] : throw FormatException('Missing required property')),
+        ictonyx: (json.containsKey("Ictonyx") ? json["Ictonyx"] : throw FormatException('Missing required property')),
+        metrocele: (json.containsKey("metrocele") ? json["metrocele"] : throw FormatException('Missing required property')),
+        misgraft: (json.containsKey("misgraft") ? json["misgraft"] : throw FormatException('Missing required property')),
+        monteith: (json.containsKey("monteith") ? json["monteith"] : throw FormatException('Missing required property')),
+        notcher: (json.containsKey("notcher") ? json["notcher"] : throw FormatException('Missing required property')),
+        prorestriction: (json.containsKey("prorestriction") ? json["prorestriction"] : throw FormatException('Missing required property')),
+        ramist: (json.containsKey("Ramist") ? json["Ramist"] : throw FormatException('Missing required property')),
+        throatlet: (json.containsKey("throatlet") ? json["throatlet"] : throw FormatException('Missing required property')),
+        unfair: (json.containsKey("unfair") ? json["unfair"] : throw FormatException('Missing required property')),
+        unsynonymous: (json.containsKey("unsynonymous") ? json["unsynonymous"] : throw FormatException('Missing required property')),
+        water: (json.containsKey("water") ? json["water"] : throw FormatException('Missing required property')),
+        zestfully: (json.containsKey("zestfully") ? json["zestfully"] : throw FormatException('Missing required property')),
+        zincic: (json.containsKey("zincic") ? json["zincic"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -666,26 +666,26 @@ class ChytridiaceaeClass {
     });
 
     factory ChytridiaceaeClass.fromJson(Map<String, dynamic> json) => ChytridiaceaeClass(
-        batidaceae: json["Batidaceae"],
-        brechites: json["Brechites"],
-        codespairer: json["codespairer"],
-        emery: json["Emery"],
-        enervative: json["enervative"],
-        excriminate: json["excriminate"],
-        goshenite: json["goshenite"],
-        grime: json["grime"],
-        gritten: json["gritten"],
-        hectorly: json["hectorly"],
-        intermediation: json["intermediation"],
-        meeterly: json["meeterly"],
-        narraganset: json["Narraganset"],
-        onymatic: json["onymatic"],
-        paddlecock: json["paddlecock"],
-        thana: json["thana"],
-        thornily: json["thornily"],
-        uckia: json["uckia"],
-        unmettle: json["unmettle"],
-        vorticellid: json["vorticellid"],
+        batidaceae: (json.containsKey("Batidaceae") ? json["Batidaceae"] : throw FormatException('Missing required property')),
+        brechites: (json.containsKey("Brechites") ? json["Brechites"] : throw FormatException('Missing required property')),
+        codespairer: (json.containsKey("codespairer") ? json["codespairer"] : throw FormatException('Missing required property')),
+        emery: (json.containsKey("Emery") ? json["Emery"] : throw FormatException('Missing required property')),
+        enervative: (json.containsKey("enervative") ? json["enervative"] : throw FormatException('Missing required property')),
+        excriminate: (json.containsKey("excriminate") ? json["excriminate"] : throw FormatException('Missing required property')),
+        goshenite: (json.containsKey("goshenite") ? json["goshenite"] : throw FormatException('Missing required property')),
+        grime: (json.containsKey("grime") ? json["grime"] : throw FormatException('Missing required property')),
+        gritten: (json.containsKey("gritten") ? json["gritten"] : throw FormatException('Missing required property')),
+        hectorly: (json.containsKey("hectorly") ? json["hectorly"] : throw FormatException('Missing required property')),
+        intermediation: (json.containsKey("intermediation") ? json["intermediation"] : throw FormatException('Missing required property')),
+        meeterly: (json.containsKey("meeterly") ? json["meeterly"] : throw FormatException('Missing required property')),
+        narraganset: (json.containsKey("Narraganset") ? json["Narraganset"] : throw FormatException('Missing required property')),
+        onymatic: (json.containsKey("onymatic") ? json["onymatic"] : throw FormatException('Missing required property')),
+        paddlecock: (json.containsKey("paddlecock") ? json["paddlecock"] : throw FormatException('Missing required property')),
+        thana: (json.containsKey("thana") ? json["thana"] : throw FormatException('Missing required property')),
+        thornily: (json.containsKey("thornily") ? json["thornily"] : throw FormatException('Missing required property')),
+        uckia: (json.containsKey("uckia") ? json["uckia"] : throw FormatException('Missing required property')),
+        unmettle: (json.containsKey("unmettle") ? json["unmettle"] : throw FormatException('Missing required property')),
+        vorticellid: (json.containsKey("vorticellid") ? json["vorticellid"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -870,26 +870,26 @@ class GryphosaurusClass {
     });
 
     factory GryphosaurusClass.fromJson(Map<String, dynamic> json) => GryphosaurusClass(
-        amissibility: json["amissibility"],
-        burushaski: json["Burushaski"],
-        citronin: json["citronin"],
-        coplaintiff: json["coplaintiff"],
-        disquisitionary: json["disquisitionary"],
-        enoplan: json["enoplan"],
-        faintness: json["faintness"],
-        hebetomy: json["hebetomy"],
-        islandry: json["islandry"],
-        lameduck: json["lameduck"],
-        overbattle: json["overbattle"],
-        overinterested: json["overinterested"],
-        phrenologic: json["phrenologic"],
-        rainband: json["rainband"],
-        shiningly: json["shiningly"],
-        stamineous: json["stamineous"],
-        subscapularis: json["subscapularis"],
-        tahami: json["Tahami"],
-        undaubed: json["undaubed"],
-        underntime: json["underntime"],
+        amissibility: (json.containsKey("amissibility") ? json["amissibility"] : throw FormatException('Missing required property')),
+        burushaski: (json.containsKey("Burushaski") ? json["Burushaski"] : throw FormatException('Missing required property')),
+        citronin: (json.containsKey("citronin") ? json["citronin"] : throw FormatException('Missing required property')),
+        coplaintiff: (json.containsKey("coplaintiff") ? json["coplaintiff"] : throw FormatException('Missing required property')),
+        disquisitionary: (json.containsKey("disquisitionary") ? json["disquisitionary"] : throw FormatException('Missing required property')),
+        enoplan: (json.containsKey("enoplan") ? json["enoplan"] : throw FormatException('Missing required property')),
+        faintness: (json.containsKey("faintness") ? json["faintness"] : throw FormatException('Missing required property')),
+        hebetomy: (json.containsKey("hebetomy") ? json["hebetomy"] : throw FormatException('Missing required property')),
+        islandry: (json.containsKey("islandry") ? json["islandry"] : throw FormatException('Missing required property')),
+        lameduck: (json.containsKey("lameduck") ? json["lameduck"] : throw FormatException('Missing required property')),
+        overbattle: (json.containsKey("overbattle") ? json["overbattle"] : throw FormatException('Missing required property')),
+        overinterested: (json.containsKey("overinterested") ? json["overinterested"] : throw FormatException('Missing required property')),
+        phrenologic: (json.containsKey("phrenologic") ? json["phrenologic"] : throw FormatException('Missing required property')),
+        rainband: (json.containsKey("rainband") ? json["rainband"] : throw FormatException('Missing required property')),
+        shiningly: (json.containsKey("shiningly") ? json["shiningly"] : throw FormatException('Missing required property')),
+        stamineous: (json.containsKey("stamineous") ? json["stamineous"] : throw FormatException('Missing required property')),
+        subscapularis: (json.containsKey("subscapularis") ? json["subscapularis"] : throw FormatException('Missing required property')),
+        tahami: (json.containsKey("Tahami") ? json["Tahami"] : throw FormatException('Missing required property')),
+        undaubed: (json.containsKey("undaubed") ? json["undaubed"] : throw FormatException('Missing required property')),
+        underntime: (json.containsKey("underntime") ? json["underntime"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1074,26 +1074,26 @@ class OskarClass {
     });
 
     factory OskarClass.fromJson(Map<String, dynamic> json) => OskarClass(
-        acrobates: json["Acrobates"],
-        beanshooter: json["beanshooter"],
-        bearhound: json["bearhound"],
-        cayuga: json["Cayuga"],
-        guarneri: json["guarneri"],
-        hypochondriacism: json["hypochondriacism"],
-        indication: json["indication"],
-        jaculative: json["jaculative"],
-        nagana: json["nagana"],
-        netherlandish: json["Netherlandish"],
-        noctivagous: json["noctivagous"],
-        nonphysiological: json["nonphysiological"],
-        praxis: json["praxis"],
-        provision: json["provision"],
-        subterhuman: json["subterhuman"],
-        sunlit: json["sunlit"],
-        syncraniate: json["syncraniate"],
-        teachment: json["teachment"],
-        unmutinous: json["unmutinous"],
-        unstoppable: json["unstoppable"],
+        acrobates: (json.containsKey("Acrobates") ? json["Acrobates"] : throw FormatException('Missing required property')),
+        beanshooter: (json.containsKey("beanshooter") ? json["beanshooter"] : throw FormatException('Missing required property')),
+        bearhound: (json.containsKey("bearhound") ? json["bearhound"] : throw FormatException('Missing required property')),
+        cayuga: (json.containsKey("Cayuga") ? json["Cayuga"] : throw FormatException('Missing required property')),
+        guarneri: (json.containsKey("guarneri") ? json["guarneri"] : throw FormatException('Missing required property')),
+        hypochondriacism: (json.containsKey("hypochondriacism") ? json["hypochondriacism"] : throw FormatException('Missing required property')),
+        indication: (json.containsKey("indication") ? json["indication"] : throw FormatException('Missing required property')),
+        jaculative: (json.containsKey("jaculative") ? json["jaculative"] : throw FormatException('Missing required property')),
+        nagana: (json.containsKey("nagana") ? json["nagana"] : throw FormatException('Missing required property')),
+        netherlandish: (json.containsKey("Netherlandish") ? json["Netherlandish"] : throw FormatException('Missing required property')),
+        noctivagous: (json.containsKey("noctivagous") ? json["noctivagous"] : throw FormatException('Missing required property')),
+        nonphysiological: (json.containsKey("nonphysiological") ? json["nonphysiological"] : throw FormatException('Missing required property')),
+        praxis: (json.containsKey("praxis") ? json["praxis"] : throw FormatException('Missing required property')),
+        provision: (json.containsKey("provision") ? json["provision"] : throw FormatException('Missing required property')),
+        subterhuman: (json.containsKey("subterhuman") ? json["subterhuman"] : throw FormatException('Missing required property')),
+        sunlit: (json.containsKey("sunlit") ? json["sunlit"] : throw FormatException('Missing required property')),
+        syncraniate: (json.containsKey("syncraniate") ? json["syncraniate"] : throw FormatException('Missing required property')),
+        teachment: (json.containsKey("teachment") ? json["teachment"] : throw FormatException('Missing required property')),
+        unmutinous: (json.containsKey("unmutinous") ? json["unmutinous"] : throw FormatException('Missing required property')),
+        unstoppable: (json.containsKey("unstoppable") ? json["unstoppable"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart
index f08aef7..1c56da1 100644
--- a/base/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations3.json/default/TopLevel.dart
@@ -234,26 +234,26 @@ class JurorClass {
     });
 
     factory JurorClass.fromJson(Map<String, dynamic> json) => JurorClass(
-        adipsy: json["adipsy"],
-        auxiliator: json["auxiliator"],
-        benda: json["benda"],
-        benjamin: json["benjamin"],
-        brandling: json["brandling"],
-        epicurishly: json["epicurishly"],
-        eremochaetous: json["eremochaetous"],
-        marten: json["marten"],
-        monocline: json["monocline"],
-        olea: json["Olea"],
-        palgat: json["palgat"],
-        pennyworth: json["pennyworth"],
-        pioury: json["pioury"],
-        pragmatistic: json["pragmatistic"],
-        stylelessness: json["stylelessness"],
-        systematical: json["systematical"],
-        thready: json["thready"],
-        uncontemporary: json["uncontemporary"],
-        uncouched: json["uncouched"],
-        uninhabitedness: json["uninhabitedness"],
+        adipsy: (json.containsKey("adipsy") ? json["adipsy"] : throw FormatException('Missing required property')),
+        auxiliator: (json.containsKey("auxiliator") ? json["auxiliator"] : throw FormatException('Missing required property')),
+        benda: (json.containsKey("benda") ? json["benda"] : throw FormatException('Missing required property')),
+        benjamin: (json.containsKey("benjamin") ? json["benjamin"] : throw FormatException('Missing required property')),
+        brandling: (json.containsKey("brandling") ? json["brandling"] : throw FormatException('Missing required property')),
+        epicurishly: (json.containsKey("epicurishly") ? json["epicurishly"] : throw FormatException('Missing required property')),
+        eremochaetous: (json.containsKey("eremochaetous") ? json["eremochaetous"] : throw FormatException('Missing required property')),
+        marten: (json.containsKey("marten") ? json["marten"] : throw FormatException('Missing required property')),
+        monocline: (json.containsKey("monocline") ? json["monocline"] : throw FormatException('Missing required property')),
+        olea: (json.containsKey("Olea") ? json["Olea"] : throw FormatException('Missing required property')),
+        palgat: (json.containsKey("palgat") ? json["palgat"] : throw FormatException('Missing required property')),
+        pennyworth: (json.containsKey("pennyworth") ? json["pennyworth"] : throw FormatException('Missing required property')),
+        pioury: (json.containsKey("pioury") ? json["pioury"] : throw FormatException('Missing required property')),
+        pragmatistic: (json.containsKey("pragmatistic") ? json["pragmatistic"] : throw FormatException('Missing required property')),
+        stylelessness: (json.containsKey("stylelessness") ? json["stylelessness"] : throw FormatException('Missing required property')),
+        systematical: (json.containsKey("systematical") ? json["systematical"] : throw FormatException('Missing required property')),
+        thready: (json.containsKey("thready") ? json["thready"] : throw FormatException('Missing required property')),
+        uncontemporary: (json.containsKey("uncontemporary") ? json["uncontemporary"] : throw FormatException('Missing required property')),
+        uncouched: (json.containsKey("uncouched") ? json["uncouched"] : throw FormatException('Missing required property')),
+        uninhabitedness: (json.containsKey("uninhabitedness") ? json["uninhabitedness"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -326,26 +326,26 @@ class LadronismClass {
     });
 
     factory LadronismClass.fromJson(Map<String, dynamic> json) => LadronismClass(
-        acclaimer: json["acclaimer"],
-        achree: json["achree"],
-        base: json["base"],
-        conundrumize: json["conundrumize"],
-        degerminator: json["degerminator"],
-        describable: json["describable"],
-        exasperatedly: json["exasperatedly"],
-        heroine: json["heroine"],
-        indazin: json["indazin"],
-        luteous: json["luteous"],
-        papular: json["papular"],
-        pritch: json["pritch"],
-        prodenia: json["Prodenia"],
-        seege: json["seege"],
-        shopgirl: json["shopgirl"],
-        tragedietta: json["tragedietta"],
-        unsparse: json["unsparse"],
-        uplook: json["uplook"],
-        vermiformis: json["vermiformis"],
-        whafabout: json["whafabout"],
+        acclaimer: (json.containsKey("acclaimer") ? json["acclaimer"] : throw FormatException('Missing required property')),
+        achree: (json.containsKey("achree") ? json["achree"] : throw FormatException('Missing required property')),
+        base: (json.containsKey("base") ? json["base"] : throw FormatException('Missing required property')),
+        conundrumize: (json.containsKey("conundrumize") ? json["conundrumize"] : throw FormatException('Missing required property')),
+        degerminator: (json.containsKey("degerminator") ? json["degerminator"] : throw FormatException('Missing required property')),
+        describable: (json.containsKey("describable") ? json["describable"] : throw FormatException('Missing required property')),
+        exasperatedly: (json.containsKey("exasperatedly") ? json["exasperatedly"] : throw FormatException('Missing required property')),
+        heroine: (json.containsKey("heroine") ? json["heroine"] : throw FormatException('Missing required property')),
+        indazin: (json.containsKey("indazin") ? json["indazin"] : throw FormatException('Missing required property')),
+        luteous: (json.containsKey("luteous") ? json["luteous"] : throw FormatException('Missing required property')),
+        papular: (json.containsKey("papular") ? json["papular"] : throw FormatException('Missing required property')),
+        pritch: (json.containsKey("pritch") ? json["pritch"] : throw FormatException('Missing required property')),
+        prodenia: (json.containsKey("Prodenia") ? json["Prodenia"] : throw FormatException('Missing required property')),
+        seege: (json.containsKey("seege") ? json["seege"] : throw FormatException('Missing required property')),
+        shopgirl: (json.containsKey("shopgirl") ? json["shopgirl"] : throw FormatException('Missing required property')),
+        tragedietta: (json.containsKey("tragedietta") ? json["tragedietta"] : throw FormatException('Missing required property')),
+        unsparse: (json.containsKey("unsparse") ? json["unsparse"] : throw FormatException('Missing required property')),
+        uplook: (json.containsKey("uplook") ? json["uplook"] : throw FormatException('Missing required property')),
+        vermiformis: (json.containsKey("vermiformis") ? json["vermiformis"] : throw FormatException('Missing required property')),
+        whafabout: (json.containsKey("whafabout") ? json["whafabout"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -418,26 +418,26 @@ class LandlubberlyClass {
     });
 
     factory LandlubberlyClass.fromJson(Map<String, dynamic> json) => LandlubberlyClass(
-        acropoleis: json["acropoleis"],
-        aminate: json["aminate"],
-        amyraldism: json["Amyraldism"],
-        bipenniform: json["bipenniform"],
-        bugre: json["bugre"],
-        calycule: json["calycule"],
-        caoutchouc: json["caoutchouc"],
-        disprover: json["disprover"],
-        fitroot: json["fitroot"],
-        fulgently: json["fulgently"],
-        kickup: json["kickup"],
-        laevoversion: json["laevoversion"],
-        moter: json["moter"],
-        objectivity: json["objectivity"],
-        posterity: json["posterity"],
-        postnuptial: json["postnuptial"],
-        precedentary: json["precedentary"],
-        saddling: json["saddling"],
-        subcurrent: json["subcurrent"],
-        unrecriminative: json["unrecriminative"],
+        acropoleis: (json.containsKey("acropoleis") ? json["acropoleis"] : throw FormatException('Missing required property')),
+        aminate: (json.containsKey("aminate") ? json["aminate"] : throw FormatException('Missing required property')),
+        amyraldism: (json.containsKey("Amyraldism") ? json["Amyraldism"] : throw FormatException('Missing required property')),
+        bipenniform: (json.containsKey("bipenniform") ? json["bipenniform"] : throw FormatException('Missing required property')),
+        bugre: (json.containsKey("bugre") ? json["bugre"] : throw FormatException('Missing required property')),
+        calycule: (json.containsKey("calycule") ? json["calycule"] : throw FormatException('Missing required property')),
+        caoutchouc: (json.containsKey("caoutchouc") ? json["caoutchouc"] : throw FormatException('Missing required property')),
+        disprover: (json.containsKey("disprover") ? json["disprover"] : throw FormatException('Missing required property')),
+        fitroot: (json.containsKey("fitroot") ? json["fitroot"] : throw FormatException('Missing required property')),
+        fulgently: (json.containsKey("fulgently") ? json["fulgently"] : throw FormatException('Missing required property')),
+        kickup: (json.containsKey("kickup") ? json["kickup"] : throw FormatException('Missing required property')),
+        laevoversion: (json.containsKey("laevoversion") ? json["laevoversion"] : throw FormatException('Missing required property')),
+        moter: (json.containsKey("moter") ? json["moter"] : throw FormatException('Missing required property')),
+        objectivity: (json.containsKey("objectivity") ? json["objectivity"] : throw FormatException('Missing required property')),
+        posterity: (json.containsKey("posterity") ? json["posterity"] : throw FormatException('Missing required property')),
+        postnuptial: (json.containsKey("postnuptial") ? json["postnuptial"] : throw FormatException('Missing required property')),
+        precedentary: (json.containsKey("precedentary") ? json["precedentary"] : throw FormatException('Missing required property')),
+        saddling: (json.containsKey("saddling") ? json["saddling"] : throw FormatException('Missing required property')),
+        subcurrent: (json.containsKey("subcurrent") ? json["subcurrent"] : throw FormatException('Missing required property')),
+        unrecriminative: (json.containsKey("unrecriminative") ? json["unrecriminative"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -788,7 +788,7 @@ class MonaziteClass {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -932,7 +932,7 @@ class Noncontributing {
         jolterhead: json["jolterhead"]?.toDouble(),
         sauternes: json["sauternes"],
         sparsely: json["sparsely"],
-        unrequested: json["unrequested"],
+        unrequested: (json.containsKey("unrequested") ? json["unrequested"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -990,26 +990,26 @@ class OccupationalistClass {
     });
 
     factory OccupationalistClass.fromJson(Map<String, dynamic> json) => OccupationalistClass(
-        beholdable: json["beholdable"],
-        brotuliform: json["brotuliform"],
-        chimakum: json["Chimakum"],
-        doodler: json["doodler"],
-        emulsin: json["emulsin"],
-        fin: json["Fin"],
-        flourishing: json["flourishing"],
-        flueless: json["flueless"],
-        furtively: json["furtively"],
-        gritter: json["gritter"],
-        interwish: json["interwish"],
-        monoxylic: json["monoxylic"],
-        myristic: json["myristic"],
-        nightwear: json["nightwear"],
-        peruser: json["peruser"],
-        theoastrological: json["theoastrological"],
-        thumby: json["thumby"],
-        tingitid: json["tingitid"],
-        trailless: json["trailless"],
-        unpocketed: json["unpocketed"],
+        beholdable: (json.containsKey("beholdable") ? json["beholdable"] : throw FormatException('Missing required property')),
+        brotuliform: (json.containsKey("brotuliform") ? json["brotuliform"] : throw FormatException('Missing required property')),
+        chimakum: (json.containsKey("Chimakum") ? json["Chimakum"] : throw FormatException('Missing required property')),
+        doodler: (json.containsKey("doodler") ? json["doodler"] : throw FormatException('Missing required property')),
+        emulsin: (json.containsKey("emulsin") ? json["emulsin"] : throw FormatException('Missing required property')),
+        fin: (json.containsKey("Fin") ? json["Fin"] : throw FormatException('Missing required property')),
+        flourishing: (json.containsKey("flourishing") ? json["flourishing"] : throw FormatException('Missing required property')),
+        flueless: (json.containsKey("flueless") ? json["flueless"] : throw FormatException('Missing required property')),
+        furtively: (json.containsKey("furtively") ? json["furtively"] : throw FormatException('Missing required property')),
+        gritter: (json.containsKey("gritter") ? json["gritter"] : throw FormatException('Missing required property')),
+        interwish: (json.containsKey("interwish") ? json["interwish"] : throw FormatException('Missing required property')),
+        monoxylic: (json.containsKey("monoxylic") ? json["monoxylic"] : throw FormatException('Missing required property')),
+        myristic: (json.containsKey("myristic") ? json["myristic"] : throw FormatException('Missing required property')),
+        nightwear: (json.containsKey("nightwear") ? json["nightwear"] : throw FormatException('Missing required property')),
+        peruser: (json.containsKey("peruser") ? json["peruser"] : throw FormatException('Missing required property')),
+        theoastrological: (json.containsKey("theoastrological") ? json["theoastrological"] : throw FormatException('Missing required property')),
+        thumby: (json.containsKey("thumby") ? json["thumby"] : throw FormatException('Missing required property')),
+        tingitid: (json.containsKey("tingitid") ? json["tingitid"] : throw FormatException('Missing required property')),
+        trailless: (json.containsKey("trailless") ? json["trailless"] : throw FormatException('Missing required property')),
+        unpocketed: (json.containsKey("unpocketed") ? json["unpocketed"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1082,26 +1082,26 @@ class OutrivalClass {
     });
 
     factory OutrivalClass.fromJson(Map<String, dynamic> json) => OutrivalClass(
-        adroitly: json["adroitly"],
-        bridehood: json["bridehood"],
-        castoroides: json["Castoroides"],
-        czechoslovak: json["Czechoslovak"],
-        diagenesis: json["diagenesis"],
-        dihexahedron: json["dihexahedron"],
-        dopester: json["dopester"],
-        eumerism: json["eumerism"],
-        flyness: json["flyness"],
-        fouler: json["fouler"],
-        laudanosine: json["laudanosine"],
-        lingulidae: json["Lingulidae"],
-        minutary: json["minutary"],
-        mitra: json["mitra"],
-        opisthorchiasis: json["opisthorchiasis"],
-        pensively: json["pensively"],
-        pubigerous: json["pubigerous"],
-        rebellious: json["rebellious"],
-        recodify: json["recodify"],
-        unpaced: json["unpaced"],
+        adroitly: (json.containsKey("adroitly") ? json["adroitly"] : throw FormatException('Missing required property')),
+        bridehood: (json.containsKey("bridehood") ? json["bridehood"] : throw FormatException('Missing required property')),
+        castoroides: (json.containsKey("Castoroides") ? json["Castoroides"] : throw FormatException('Missing required property')),
+        czechoslovak: (json.containsKey("Czechoslovak") ? json["Czechoslovak"] : throw FormatException('Missing required property')),
+        diagenesis: (json.containsKey("diagenesis") ? json["diagenesis"] : throw FormatException('Missing required property')),
+        dihexahedron: (json.containsKey("dihexahedron") ? json["dihexahedron"] : throw FormatException('Missing required property')),
+        dopester: (json.containsKey("dopester") ? json["dopester"] : throw FormatException('Missing required property')),
+        eumerism: (json.containsKey("eumerism") ? json["eumerism"] : throw FormatException('Missing required property')),
+        flyness: (json.containsKey("flyness") ? json["flyness"] : throw FormatException('Missing required property')),
+        fouler: (json.containsKey("fouler") ? json["fouler"] : throw FormatException('Missing required property')),
+        laudanosine: (json.containsKey("laudanosine") ? json["laudanosine"] : throw FormatException('Missing required property')),
+        lingulidae: (json.containsKey("Lingulidae") ? json["Lingulidae"] : throw FormatException('Missing required property')),
+        minutary: (json.containsKey("minutary") ? json["minutary"] : throw FormatException('Missing required property')),
+        mitra: (json.containsKey("mitra") ? json["mitra"] : throw FormatException('Missing required property')),
+        opisthorchiasis: (json.containsKey("opisthorchiasis") ? json["opisthorchiasis"] : throw FormatException('Missing required property')),
+        pensively: (json.containsKey("pensively") ? json["pensively"] : throw FormatException('Missing required property')),
+        pubigerous: (json.containsKey("pubigerous") ? json["pubigerous"] : throw FormatException('Missing required property')),
+        rebellious: (json.containsKey("rebellious") ? json["rebellious"] : throw FormatException('Missing required property')),
+        recodify: (json.containsKey("recodify") ? json["recodify"] : throw FormatException('Missing required property')),
+        unpaced: (json.containsKey("unpaced") ? json["unpaced"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1398,26 +1398,26 @@ class PotwhiskyClass {
     });
 
     factory PotwhiskyClass.fromJson(Map<String, dynamic> json) => PotwhiskyClass(
-        arciform: json["arciform"],
-        cresolin: json["cresolin"],
-        disheartener: json["disheartener"],
-        disproportionable: json["disproportionable"],
-        euchorda: json["Euchorda"],
-        ferryway: json["ferryway"],
-        filamentiferous: json["filamentiferous"],
-        flemish: json["flemish"],
-        forgainst: json["forgainst"],
-        grainering: json["grainering"],
-        irrevoluble: json["irrevoluble"],
-        kindredship: json["kindredship"],
-        pinguitudinous: json["pinguitudinous"],
-        simpletonic: json["simpletonic"],
-        singsong: json["singsong"],
-        submergement: json["submergement"],
-        supraoesophagal: json["supraoesophagal"],
-        thrashel: json["thrashel"],
-        tyremesis: json["tyremesis"],
-        yoruba: json["Yoruba"],
+        arciform: (json.containsKey("arciform") ? json["arciform"] : throw FormatException('Missing required property')),
+        cresolin: (json.containsKey("cresolin") ? json["cresolin"] : throw FormatException('Missing required property')),
+        disheartener: (json.containsKey("disheartener") ? json["disheartener"] : throw FormatException('Missing required property')),
+        disproportionable: (json.containsKey("disproportionable") ? json["disproportionable"] : throw FormatException('Missing required property')),
+        euchorda: (json.containsKey("Euchorda") ? json["Euchorda"] : throw FormatException('Missing required property')),
+        ferryway: (json.containsKey("ferryway") ? json["ferryway"] : throw FormatException('Missing required property')),
+        filamentiferous: (json.containsKey("filamentiferous") ? json["filamentiferous"] : throw FormatException('Missing required property')),
+        flemish: (json.containsKey("flemish") ? json["flemish"] : throw FormatException('Missing required property')),
+        forgainst: (json.containsKey("forgainst") ? json["forgainst"] : throw FormatException('Missing required property')),
+        grainering: (json.containsKey("grainering") ? json["grainering"] : throw FormatException('Missing required property')),
+        irrevoluble: (json.containsKey("irrevoluble") ? json["irrevoluble"] : throw FormatException('Missing required property')),
+        kindredship: (json.containsKey("kindredship") ? json["kindredship"] : throw FormatException('Missing required property')),
+        pinguitudinous: (json.containsKey("pinguitudinous") ? json["pinguitudinous"] : throw FormatException('Missing required property')),
+        simpletonic: (json.containsKey("simpletonic") ? json["simpletonic"] : throw FormatException('Missing required property')),
+        singsong: (json.containsKey("singsong") ? json["singsong"] : throw FormatException('Missing required property')),
+        submergement: (json.containsKey("submergement") ? json["submergement"] : throw FormatException('Missing required property')),
+        supraoesophagal: (json.containsKey("supraoesophagal") ? json["supraoesophagal"] : throw FormatException('Missing required property')),
+        thrashel: (json.containsKey("thrashel") ? json["thrashel"] : throw FormatException('Missing required property')),
+        tyremesis: (json.containsKey("tyremesis") ? json["tyremesis"] : throw FormatException('Missing required property')),
+        yoruba: (json.containsKey("Yoruba") ? json["Yoruba"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1490,26 +1490,26 @@ class PrefreshmanClass {
     });
 
     factory PrefreshmanClass.fromJson(Map<String, dynamic> json) => PrefreshmanClass(
-        azorubine: json["azorubine"],
-        choroiditis: json["choroiditis"],
-        coagulatory: json["coagulatory"],
-        cyclorama: json["cyclorama"],
-        dolphus: json["Dolphus"],
-        duckhearted: json["duckhearted"],
-        ficus: json["Ficus"],
-        gemaric: json["Gemaric"],
-        jugation: json["jugation"],
-        myoliposis: json["myoliposis"],
-        nonnomination: json["nonnomination"],
-        palay: json["palay"],
-        pentactinal: json["pentactinal"],
-        phaet: json["Phaet"],
-        piquant: json["piquant"],
-        registration: json["registration"],
-        remancipation: json["remancipation"],
-        scutatiform: json["scutatiform"],
-        theodolite: json["theodolite"],
-        underward: json["underward"],
+        azorubine: (json.containsKey("azorubine") ? json["azorubine"] : throw FormatException('Missing required property')),
+        choroiditis: (json.containsKey("choroiditis") ? json["choroiditis"] : throw FormatException('Missing required property')),
+        coagulatory: (json.containsKey("coagulatory") ? json["coagulatory"] : throw FormatException('Missing required property')),
+        cyclorama: (json.containsKey("cyclorama") ? json["cyclorama"] : throw FormatException('Missing required property')),
+        dolphus: (json.containsKey("Dolphus") ? json["Dolphus"] : throw FormatException('Missing required property')),
+        duckhearted: (json.containsKey("duckhearted") ? json["duckhearted"] : throw FormatException('Missing required property')),
+        ficus: (json.containsKey("Ficus") ? json["Ficus"] : throw FormatException('Missing required property')),
+        gemaric: (json.containsKey("Gemaric") ? json["Gemaric"] : throw FormatException('Missing required property')),
+        jugation: (json.containsKey("jugation") ? json["jugation"] : throw FormatException('Missing required property')),
+        myoliposis: (json.containsKey("myoliposis") ? json["myoliposis"] : throw FormatException('Missing required property')),
+        nonnomination: (json.containsKey("nonnomination") ? json["nonnomination"] : throw FormatException('Missing required property')),
+        palay: (json.containsKey("palay") ? json["palay"] : throw FormatException('Missing required property')),
+        pentactinal: (json.containsKey("pentactinal") ? json["pentactinal"] : throw FormatException('Missing required property')),
+        phaet: (json.containsKey("Phaet") ? json["Phaet"] : throw FormatException('Missing required property')),
+        piquant: (json.containsKey("piquant") ? json["piquant"] : throw FormatException('Missing required property')),
+        registration: (json.containsKey("registration") ? json["registration"] : throw FormatException('Missing required property')),
+        remancipation: (json.containsKey("remancipation") ? json["remancipation"] : throw FormatException('Missing required property')),
+        scutatiform: (json.containsKey("scutatiform") ? json["scutatiform"] : throw FormatException('Missing required property')),
+        theodolite: (json.containsKey("theodolite") ? json["theodolite"] : throw FormatException('Missing required property')),
+        underward: (json.containsKey("underward") ? json["underward"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart
index e603106..941ca31 100644
--- a/base/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations3.json/final-props-false--58a791807e0c/TopLevel.dart
@@ -234,26 +234,26 @@ class JurorClass {
     });
 
     factory JurorClass.fromJson(Map<String, dynamic> json) => JurorClass(
-        adipsy: json["adipsy"],
-        auxiliator: json["auxiliator"],
-        benda: json["benda"],
-        benjamin: json["benjamin"],
-        brandling: json["brandling"],
-        epicurishly: json["epicurishly"],
-        eremochaetous: json["eremochaetous"],
-        marten: json["marten"],
-        monocline: json["monocline"],
-        olea: json["Olea"],
-        palgat: json["palgat"],
-        pennyworth: json["pennyworth"],
-        pioury: json["pioury"],
-        pragmatistic: json["pragmatistic"],
-        stylelessness: json["stylelessness"],
-        systematical: json["systematical"],
-        thready: json["thready"],
-        uncontemporary: json["uncontemporary"],
-        uncouched: json["uncouched"],
-        uninhabitedness: json["uninhabitedness"],
+        adipsy: (json.containsKey("adipsy") ? json["adipsy"] : throw FormatException('Missing required property')),
+        auxiliator: (json.containsKey("auxiliator") ? json["auxiliator"] : throw FormatException('Missing required property')),
+        benda: (json.containsKey("benda") ? json["benda"] : throw FormatException('Missing required property')),
+        benjamin: (json.containsKey("benjamin") ? json["benjamin"] : throw FormatException('Missing required property')),
+        brandling: (json.containsKey("brandling") ? json["brandling"] : throw FormatException('Missing required property')),
+        epicurishly: (json.containsKey("epicurishly") ? json["epicurishly"] : throw FormatException('Missing required property')),
+        eremochaetous: (json.containsKey("eremochaetous") ? json["eremochaetous"] : throw FormatException('Missing required property')),
+        marten: (json.containsKey("marten") ? json["marten"] : throw FormatException('Missing required property')),
+        monocline: (json.containsKey("monocline") ? json["monocline"] : throw FormatException('Missing required property')),
+        olea: (json.containsKey("Olea") ? json["Olea"] : throw FormatException('Missing required property')),
+        palgat: (json.containsKey("palgat") ? json["palgat"] : throw FormatException('Missing required property')),
+        pennyworth: (json.containsKey("pennyworth") ? json["pennyworth"] : throw FormatException('Missing required property')),
+        pioury: (json.containsKey("pioury") ? json["pioury"] : throw FormatException('Missing required property')),
+        pragmatistic: (json.containsKey("pragmatistic") ? json["pragmatistic"] : throw FormatException('Missing required property')),
+        stylelessness: (json.containsKey("stylelessness") ? json["stylelessness"] : throw FormatException('Missing required property')),
+        systematical: (json.containsKey("systematical") ? json["systematical"] : throw FormatException('Missing required property')),
+        thready: (json.containsKey("thready") ? json["thready"] : throw FormatException('Missing required property')),
+        uncontemporary: (json.containsKey("uncontemporary") ? json["uncontemporary"] : throw FormatException('Missing required property')),
+        uncouched: (json.containsKey("uncouched") ? json["uncouched"] : throw FormatException('Missing required property')),
+        uninhabitedness: (json.containsKey("uninhabitedness") ? json["uninhabitedness"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -326,26 +326,26 @@ class LadronismClass {
     });
 
     factory LadronismClass.fromJson(Map<String, dynamic> json) => LadronismClass(
-        acclaimer: json["acclaimer"],
-        achree: json["achree"],
-        base: json["base"],
-        conundrumize: json["conundrumize"],
-        degerminator: json["degerminator"],
-        describable: json["describable"],
-        exasperatedly: json["exasperatedly"],
-        heroine: json["heroine"],
-        indazin: json["indazin"],
-        luteous: json["luteous"],
-        papular: json["papular"],
-        pritch: json["pritch"],
-        prodenia: json["Prodenia"],
-        seege: json["seege"],
-        shopgirl: json["shopgirl"],
-        tragedietta: json["tragedietta"],
-        unsparse: json["unsparse"],
-        uplook: json["uplook"],
-        vermiformis: json["vermiformis"],
-        whafabout: json["whafabout"],
+        acclaimer: (json.containsKey("acclaimer") ? json["acclaimer"] : throw FormatException('Missing required property')),
+        achree: (json.containsKey("achree") ? json["achree"] : throw FormatException('Missing required property')),
+        base: (json.containsKey("base") ? json["base"] : throw FormatException('Missing required property')),
+        conundrumize: (json.containsKey("conundrumize") ? json["conundrumize"] : throw FormatException('Missing required property')),
+        degerminator: (json.containsKey("degerminator") ? json["degerminator"] : throw FormatException('Missing required property')),
+        describable: (json.containsKey("describable") ? json["describable"] : throw FormatException('Missing required property')),
+        exasperatedly: (json.containsKey("exasperatedly") ? json["exasperatedly"] : throw FormatException('Missing required property')),
+        heroine: (json.containsKey("heroine") ? json["heroine"] : throw FormatException('Missing required property')),
+        indazin: (json.containsKey("indazin") ? json["indazin"] : throw FormatException('Missing required property')),
+        luteous: (json.containsKey("luteous") ? json["luteous"] : throw FormatException('Missing required property')),
+        papular: (json.containsKey("papular") ? json["papular"] : throw FormatException('Missing required property')),
+        pritch: (json.containsKey("pritch") ? json["pritch"] : throw FormatException('Missing required property')),
+        prodenia: (json.containsKey("Prodenia") ? json["Prodenia"] : throw FormatException('Missing required property')),
+        seege: (json.containsKey("seege") ? json["seege"] : throw FormatException('Missing required property')),
+        shopgirl: (json.containsKey("shopgirl") ? json["shopgirl"] : throw FormatException('Missing required property')),
+        tragedietta: (json.containsKey("tragedietta") ? json["tragedietta"] : throw FormatException('Missing required property')),
+        unsparse: (json.containsKey("unsparse") ? json["unsparse"] : throw FormatException('Missing required property')),
+        uplook: (json.containsKey("uplook") ? json["uplook"] : throw FormatException('Missing required property')),
+        vermiformis: (json.containsKey("vermiformis") ? json["vermiformis"] : throw FormatException('Missing required property')),
+        whafabout: (json.containsKey("whafabout") ? json["whafabout"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -418,26 +418,26 @@ class LandlubberlyClass {
     });
 
     factory LandlubberlyClass.fromJson(Map<String, dynamic> json) => LandlubberlyClass(
-        acropoleis: json["acropoleis"],
-        aminate: json["aminate"],
-        amyraldism: json["Amyraldism"],
-        bipenniform: json["bipenniform"],
-        bugre: json["bugre"],
-        calycule: json["calycule"],
-        caoutchouc: json["caoutchouc"],
-        disprover: json["disprover"],
-        fitroot: json["fitroot"],
-        fulgently: json["fulgently"],
-        kickup: json["kickup"],
-        laevoversion: json["laevoversion"],
-        moter: json["moter"],
-        objectivity: json["objectivity"],
-        posterity: json["posterity"],
-        postnuptial: json["postnuptial"],
-        precedentary: json["precedentary"],
-        saddling: json["saddling"],
-        subcurrent: json["subcurrent"],
-        unrecriminative: json["unrecriminative"],
+        acropoleis: (json.containsKey("acropoleis") ? json["acropoleis"] : throw FormatException('Missing required property')),
+        aminate: (json.containsKey("aminate") ? json["aminate"] : throw FormatException('Missing required property')),
+        amyraldism: (json.containsKey("Amyraldism") ? json["Amyraldism"] : throw FormatException('Missing required property')),
+        bipenniform: (json.containsKey("bipenniform") ? json["bipenniform"] : throw FormatException('Missing required property')),
+        bugre: (json.containsKey("bugre") ? json["bugre"] : throw FormatException('Missing required property')),
+        calycule: (json.containsKey("calycule") ? json["calycule"] : throw FormatException('Missing required property')),
+        caoutchouc: (json.containsKey("caoutchouc") ? json["caoutchouc"] : throw FormatException('Missing required property')),
+        disprover: (json.containsKey("disprover") ? json["disprover"] : throw FormatException('Missing required property')),
+        fitroot: (json.containsKey("fitroot") ? json["fitroot"] : throw FormatException('Missing required property')),
+        fulgently: (json.containsKey("fulgently") ? json["fulgently"] : throw FormatException('Missing required property')),
+        kickup: (json.containsKey("kickup") ? json["kickup"] : throw FormatException('Missing required property')),
+        laevoversion: (json.containsKey("laevoversion") ? json["laevoversion"] : throw FormatException('Missing required property')),
+        moter: (json.containsKey("moter") ? json["moter"] : throw FormatException('Missing required property')),
+        objectivity: (json.containsKey("objectivity") ? json["objectivity"] : throw FormatException('Missing required property')),
+        posterity: (json.containsKey("posterity") ? json["posterity"] : throw FormatException('Missing required property')),
+        postnuptial: (json.containsKey("postnuptial") ? json["postnuptial"] : throw FormatException('Missing required property')),
+        precedentary: (json.containsKey("precedentary") ? json["precedentary"] : throw FormatException('Missing required property')),
+        saddling: (json.containsKey("saddling") ? json["saddling"] : throw FormatException('Missing required property')),
+        subcurrent: (json.containsKey("subcurrent") ? json["subcurrent"] : throw FormatException('Missing required property')),
+        unrecriminative: (json.containsKey("unrecriminative") ? json["unrecriminative"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -788,7 +788,7 @@ class MonaziteClass {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -932,7 +932,7 @@ class Noncontributing {
         jolterhead: json["jolterhead"]?.toDouble(),
         sauternes: json["sauternes"],
         sparsely: json["sparsely"],
-        unrequested: json["unrequested"],
+        unrequested: (json.containsKey("unrequested") ? json["unrequested"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -990,26 +990,26 @@ class OccupationalistClass {
     });
 
     factory OccupationalistClass.fromJson(Map<String, dynamic> json) => OccupationalistClass(
-        beholdable: json["beholdable"],
-        brotuliform: json["brotuliform"],
-        chimakum: json["Chimakum"],
-        doodler: json["doodler"],
-        emulsin: json["emulsin"],
-        fin: json["Fin"],
-        flourishing: json["flourishing"],
-        flueless: json["flueless"],
-        furtively: json["furtively"],
-        gritter: json["gritter"],
-        interwish: json["interwish"],
-        monoxylic: json["monoxylic"],
-        myristic: json["myristic"],
-        nightwear: json["nightwear"],
-        peruser: json["peruser"],
-        theoastrological: json["theoastrological"],
-        thumby: json["thumby"],
-        tingitid: json["tingitid"],
-        trailless: json["trailless"],
-        unpocketed: json["unpocketed"],
+        beholdable: (json.containsKey("beholdable") ? json["beholdable"] : throw FormatException('Missing required property')),
+        brotuliform: (json.containsKey("brotuliform") ? json["brotuliform"] : throw FormatException('Missing required property')),
+        chimakum: (json.containsKey("Chimakum") ? json["Chimakum"] : throw FormatException('Missing required property')),
+        doodler: (json.containsKey("doodler") ? json["doodler"] : throw FormatException('Missing required property')),
+        emulsin: (json.containsKey("emulsin") ? json["emulsin"] : throw FormatException('Missing required property')),
+        fin: (json.containsKey("Fin") ? json["Fin"] : throw FormatException('Missing required property')),
+        flourishing: (json.containsKey("flourishing") ? json["flourishing"] : throw FormatException('Missing required property')),
+        flueless: (json.containsKey("flueless") ? json["flueless"] : throw FormatException('Missing required property')),
+        furtively: (json.containsKey("furtively") ? json["furtively"] : throw FormatException('Missing required property')),
+        gritter: (json.containsKey("gritter") ? json["gritter"] : throw FormatException('Missing required property')),
+        interwish: (json.containsKey("interwish") ? json["interwish"] : throw FormatException('Missing required property')),
+        monoxylic: (json.containsKey("monoxylic") ? json["monoxylic"] : throw FormatException('Missing required property')),
+        myristic: (json.containsKey("myristic") ? json["myristic"] : throw FormatException('Missing required property')),
+        nightwear: (json.containsKey("nightwear") ? json["nightwear"] : throw FormatException('Missing required property')),
+        peruser: (json.containsKey("peruser") ? json["peruser"] : throw FormatException('Missing required property')),
+        theoastrological: (json.containsKey("theoastrological") ? json["theoastrological"] : throw FormatException('Missing required property')),
+        thumby: (json.containsKey("thumby") ? json["thumby"] : throw FormatException('Missing required property')),
+        tingitid: (json.containsKey("tingitid") ? json["tingitid"] : throw FormatException('Missing required property')),
+        trailless: (json.containsKey("trailless") ? json["trailless"] : throw FormatException('Missing required property')),
+        unpocketed: (json.containsKey("unpocketed") ? json["unpocketed"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1082,26 +1082,26 @@ class OutrivalClass {
     });
 
     factory OutrivalClass.fromJson(Map<String, dynamic> json) => OutrivalClass(
-        adroitly: json["adroitly"],
-        bridehood: json["bridehood"],
-        castoroides: json["Castoroides"],
-        czechoslovak: json["Czechoslovak"],
-        diagenesis: json["diagenesis"],
-        dihexahedron: json["dihexahedron"],
-        dopester: json["dopester"],
-        eumerism: json["eumerism"],
-        flyness: json["flyness"],
-        fouler: json["fouler"],
-        laudanosine: json["laudanosine"],
-        lingulidae: json["Lingulidae"],
-        minutary: json["minutary"],
-        mitra: json["mitra"],
-        opisthorchiasis: json["opisthorchiasis"],
-        pensively: json["pensively"],
-        pubigerous: json["pubigerous"],
-        rebellious: json["rebellious"],
-        recodify: json["recodify"],
-        unpaced: json["unpaced"],
+        adroitly: (json.containsKey("adroitly") ? json["adroitly"] : throw FormatException('Missing required property')),
+        bridehood: (json.containsKey("bridehood") ? json["bridehood"] : throw FormatException('Missing required property')),
+        castoroides: (json.containsKey("Castoroides") ? json["Castoroides"] : throw FormatException('Missing required property')),
+        czechoslovak: (json.containsKey("Czechoslovak") ? json["Czechoslovak"] : throw FormatException('Missing required property')),
+        diagenesis: (json.containsKey("diagenesis") ? json["diagenesis"] : throw FormatException('Missing required property')),
+        dihexahedron: (json.containsKey("dihexahedron") ? json["dihexahedron"] : throw FormatException('Missing required property')),
+        dopester: (json.containsKey("dopester") ? json["dopester"] : throw FormatException('Missing required property')),
+        eumerism: (json.containsKey("eumerism") ? json["eumerism"] : throw FormatException('Missing required property')),
+        flyness: (json.containsKey("flyness") ? json["flyness"] : throw FormatException('Missing required property')),
+        fouler: (json.containsKey("fouler") ? json["fouler"] : throw FormatException('Missing required property')),
+        laudanosine: (json.containsKey("laudanosine") ? json["laudanosine"] : throw FormatException('Missing required property')),
+        lingulidae: (json.containsKey("Lingulidae") ? json["Lingulidae"] : throw FormatException('Missing required property')),
+        minutary: (json.containsKey("minutary") ? json["minutary"] : throw FormatException('Missing required property')),
+        mitra: (json.containsKey("mitra") ? json["mitra"] : throw FormatException('Missing required property')),
+        opisthorchiasis: (json.containsKey("opisthorchiasis") ? json["opisthorchiasis"] : throw FormatException('Missing required property')),
+        pensively: (json.containsKey("pensively") ? json["pensively"] : throw FormatException('Missing required property')),
+        pubigerous: (json.containsKey("pubigerous") ? json["pubigerous"] : throw FormatException('Missing required property')),
+        rebellious: (json.containsKey("rebellious") ? json["rebellious"] : throw FormatException('Missing required property')),
+        recodify: (json.containsKey("recodify") ? json["recodify"] : throw FormatException('Missing required property')),
+        unpaced: (json.containsKey("unpaced") ? json["unpaced"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1398,26 +1398,26 @@ class PotwhiskyClass {
     });
 
     factory PotwhiskyClass.fromJson(Map<String, dynamic> json) => PotwhiskyClass(
-        arciform: json["arciform"],
-        cresolin: json["cresolin"],
-        disheartener: json["disheartener"],
-        disproportionable: json["disproportionable"],
-        euchorda: json["Euchorda"],
-        ferryway: json["ferryway"],
-        filamentiferous: json["filamentiferous"],
-        flemish: json["flemish"],
-        forgainst: json["forgainst"],
-        grainering: json["grainering"],
-        irrevoluble: json["irrevoluble"],
-        kindredship: json["kindredship"],
-        pinguitudinous: json["pinguitudinous"],
-        simpletonic: json["simpletonic"],
-        singsong: json["singsong"],
-        submergement: json["submergement"],
-        supraoesophagal: json["supraoesophagal"],
-        thrashel: json["thrashel"],
-        tyremesis: json["tyremesis"],
-        yoruba: json["Yoruba"],
+        arciform: (json.containsKey("arciform") ? json["arciform"] : throw FormatException('Missing required property')),
+        cresolin: (json.containsKey("cresolin") ? json["cresolin"] : throw FormatException('Missing required property')),
+        disheartener: (json.containsKey("disheartener") ? json["disheartener"] : throw FormatException('Missing required property')),
+        disproportionable: (json.containsKey("disproportionable") ? json["disproportionable"] : throw FormatException('Missing required property')),
+        euchorda: (json.containsKey("Euchorda") ? json["Euchorda"] : throw FormatException('Missing required property')),
+        ferryway: (json.containsKey("ferryway") ? json["ferryway"] : throw FormatException('Missing required property')),
+        filamentiferous: (json.containsKey("filamentiferous") ? json["filamentiferous"] : throw FormatException('Missing required property')),
+        flemish: (json.containsKey("flemish") ? json["flemish"] : throw FormatException('Missing required property')),
+        forgainst: (json.containsKey("forgainst") ? json["forgainst"] : throw FormatException('Missing required property')),
+        grainering: (json.containsKey("grainering") ? json["grainering"] : throw FormatException('Missing required property')),
+        irrevoluble: (json.containsKey("irrevoluble") ? json["irrevoluble"] : throw FormatException('Missing required property')),
+        kindredship: (json.containsKey("kindredship") ? json["kindredship"] : throw FormatException('Missing required property')),
+        pinguitudinous: (json.containsKey("pinguitudinous") ? json["pinguitudinous"] : throw FormatException('Missing required property')),
+        simpletonic: (json.containsKey("simpletonic") ? json["simpletonic"] : throw FormatException('Missing required property')),
+        singsong: (json.containsKey("singsong") ? json["singsong"] : throw FormatException('Missing required property')),
+        submergement: (json.containsKey("submergement") ? json["submergement"] : throw FormatException('Missing required property')),
+        supraoesophagal: (json.containsKey("supraoesophagal") ? json["supraoesophagal"] : throw FormatException('Missing required property')),
+        thrashel: (json.containsKey("thrashel") ? json["thrashel"] : throw FormatException('Missing required property')),
+        tyremesis: (json.containsKey("tyremesis") ? json["tyremesis"] : throw FormatException('Missing required property')),
+        yoruba: (json.containsKey("Yoruba") ? json["Yoruba"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1490,26 +1490,26 @@ class PrefreshmanClass {
     });
 
     factory PrefreshmanClass.fromJson(Map<String, dynamic> json) => PrefreshmanClass(
-        azorubine: json["azorubine"],
-        choroiditis: json["choroiditis"],
-        coagulatory: json["coagulatory"],
-        cyclorama: json["cyclorama"],
-        dolphus: json["Dolphus"],
-        duckhearted: json["duckhearted"],
-        ficus: json["Ficus"],
-        gemaric: json["Gemaric"],
-        jugation: json["jugation"],
-        myoliposis: json["myoliposis"],
-        nonnomination: json["nonnomination"],
-        palay: json["palay"],
-        pentactinal: json["pentactinal"],
-        phaet: json["Phaet"],
-        piquant: json["piquant"],
-        registration: json["registration"],
-        remancipation: json["remancipation"],
-        scutatiform: json["scutatiform"],
-        theodolite: json["theodolite"],
-        underward: json["underward"],
+        azorubine: (json.containsKey("azorubine") ? json["azorubine"] : throw FormatException('Missing required property')),
+        choroiditis: (json.containsKey("choroiditis") ? json["choroiditis"] : throw FormatException('Missing required property')),
+        coagulatory: (json.containsKey("coagulatory") ? json["coagulatory"] : throw FormatException('Missing required property')),
+        cyclorama: (json.containsKey("cyclorama") ? json["cyclorama"] : throw FormatException('Missing required property')),
+        dolphus: (json.containsKey("Dolphus") ? json["Dolphus"] : throw FormatException('Missing required property')),
+        duckhearted: (json.containsKey("duckhearted") ? json["duckhearted"] : throw FormatException('Missing required property')),
+        ficus: (json.containsKey("Ficus") ? json["Ficus"] : throw FormatException('Missing required property')),
+        gemaric: (json.containsKey("Gemaric") ? json["Gemaric"] : throw FormatException('Missing required property')),
+        jugation: (json.containsKey("jugation") ? json["jugation"] : throw FormatException('Missing required property')),
+        myoliposis: (json.containsKey("myoliposis") ? json["myoliposis"] : throw FormatException('Missing required property')),
+        nonnomination: (json.containsKey("nonnomination") ? json["nonnomination"] : throw FormatException('Missing required property')),
+        palay: (json.containsKey("palay") ? json["palay"] : throw FormatException('Missing required property')),
+        pentactinal: (json.containsKey("pentactinal") ? json["pentactinal"] : throw FormatException('Missing required property')),
+        phaet: (json.containsKey("Phaet") ? json["Phaet"] : throw FormatException('Missing required property')),
+        piquant: (json.containsKey("piquant") ? json["piquant"] : throw FormatException('Missing required property')),
+        registration: (json.containsKey("registration") ? json["registration"] : throw FormatException('Missing required property')),
+        remancipation: (json.containsKey("remancipation") ? json["remancipation"] : throw FormatException('Missing required property')),
+        scutatiform: (json.containsKey("scutatiform") ? json["scutatiform"] : throw FormatException('Missing required property')),
+        theodolite: (json.containsKey("theodolite") ? json["theodolite"] : throw FormatException('Missing required property')),
+        underward: (json.containsKey("underward") ? json["underward"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart
index d2580eb..7a58308 100644
--- a/base/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations4.json/default/TopLevel.dart
@@ -274,26 +274,26 @@ class PulpitismClass {
     });
 
     factory PulpitismClass.fromJson(Map<String, dynamic> json) => PulpitismClass(
-        abnet: json["abnet"],
-        buckhorn: json["buckhorn"],
-        calciform: json["calciform"],
-        chelophore: json["chelophore"],
-        cogitation: json["cogitation"],
-        decreeable: json["decreeable"],
-        despicable: json["despicable"],
-        isodiazo: json["isodiazo"],
-        jadedly: json["jadedly"],
-        leptochlorite: json["leptochlorite"],
-        nursling: json["nursling"],
-        palamedean: json["palamedean"],
-        photoheliograph: json["photoheliograph"],
-        pipewood: json["pipewood"],
-        roberd: json["roberd"],
-        statable: json["statable"],
-        superassume: json["superassume"],
-        syllabe: json["syllabe"],
-        toughhead: json["toughhead"],
-        underburn: json["underburn"],
+        abnet: (json.containsKey("abnet") ? json["abnet"] : throw FormatException('Missing required property')),
+        buckhorn: (json.containsKey("buckhorn") ? json["buckhorn"] : throw FormatException('Missing required property')),
+        calciform: (json.containsKey("calciform") ? json["calciform"] : throw FormatException('Missing required property')),
+        chelophore: (json.containsKey("chelophore") ? json["chelophore"] : throw FormatException('Missing required property')),
+        cogitation: (json.containsKey("cogitation") ? json["cogitation"] : throw FormatException('Missing required property')),
+        decreeable: (json.containsKey("decreeable") ? json["decreeable"] : throw FormatException('Missing required property')),
+        despicable: (json.containsKey("despicable") ? json["despicable"] : throw FormatException('Missing required property')),
+        isodiazo: (json.containsKey("isodiazo") ? json["isodiazo"] : throw FormatException('Missing required property')),
+        jadedly: (json.containsKey("jadedly") ? json["jadedly"] : throw FormatException('Missing required property')),
+        leptochlorite: (json.containsKey("leptochlorite") ? json["leptochlorite"] : throw FormatException('Missing required property')),
+        nursling: (json.containsKey("nursling") ? json["nursling"] : throw FormatException('Missing required property')),
+        palamedean: (json.containsKey("palamedean") ? json["palamedean"] : throw FormatException('Missing required property')),
+        photoheliograph: (json.containsKey("photoheliograph") ? json["photoheliograph"] : throw FormatException('Missing required property')),
+        pipewood: (json.containsKey("pipewood") ? json["pipewood"] : throw FormatException('Missing required property')),
+        roberd: (json.containsKey("roberd") ? json["roberd"] : throw FormatException('Missing required property')),
+        statable: (json.containsKey("statable") ? json["statable"] : throw FormatException('Missing required property')),
+        superassume: (json.containsKey("superassume") ? json["superassume"] : throw FormatException('Missing required property')),
+        syllabe: (json.containsKey("syllabe") ? json["syllabe"] : throw FormatException('Missing required property')),
+        toughhead: (json.containsKey("toughhead") ? json["toughhead"] : throw FormatException('Missing required property')),
+        underburn: (json.containsKey("underburn") ? json["underburn"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -366,26 +366,26 @@ class PyodermiaClass {
     });
 
     factory PyodermiaClass.fromJson(Map<String, dynamic> json) => PyodermiaClass(
-        aphoristically: json["aphoristically"],
-        apophyllous: json["apophyllous"],
-        cognize: json["cognize"],
-        dermonosology: json["dermonosology"],
-        gyppo: json["Gyppo"],
-        ither: json["ither"],
-        juglandaceous: json["juglandaceous"],
-        litho: json["litho"],
-        macropterous: json["macropterous"],
-        photographer: json["photographer"],
-        romancing: json["romancing"],
-        rumness: json["rumness"],
-        somniloquist: json["somniloquist"],
-        stressfully: json["stressfully"],
-        tactically: json["tactically"],
-        tracheophony: json["tracheophony"],
-        unappositely: json["unappositely"],
-        unclothedly: json["unclothedly"],
-        unimplied: json["unimplied"],
-        unsyncopated: json["unsyncopated"],
+        aphoristically: (json.containsKey("aphoristically") ? json["aphoristically"] : throw FormatException('Missing required property')),
+        apophyllous: (json.containsKey("apophyllous") ? json["apophyllous"] : throw FormatException('Missing required property')),
+        cognize: (json.containsKey("cognize") ? json["cognize"] : throw FormatException('Missing required property')),
+        dermonosology: (json.containsKey("dermonosology") ? json["dermonosology"] : throw FormatException('Missing required property')),
+        gyppo: (json.containsKey("Gyppo") ? json["Gyppo"] : throw FormatException('Missing required property')),
+        ither: (json.containsKey("ither") ? json["ither"] : throw FormatException('Missing required property')),
+        juglandaceous: (json.containsKey("juglandaceous") ? json["juglandaceous"] : throw FormatException('Missing required property')),
+        litho: (json.containsKey("litho") ? json["litho"] : throw FormatException('Missing required property')),
+        macropterous: (json.containsKey("macropterous") ? json["macropterous"] : throw FormatException('Missing required property')),
+        photographer: (json.containsKey("photographer") ? json["photographer"] : throw FormatException('Missing required property')),
+        romancing: (json.containsKey("romancing") ? json["romancing"] : throw FormatException('Missing required property')),
+        rumness: (json.containsKey("rumness") ? json["rumness"] : throw FormatException('Missing required property')),
+        somniloquist: (json.containsKey("somniloquist") ? json["somniloquist"] : throw FormatException('Missing required property')),
+        stressfully: (json.containsKey("stressfully") ? json["stressfully"] : throw FormatException('Missing required property')),
+        tactically: (json.containsKey("tactically") ? json["tactically"] : throw FormatException('Missing required property')),
+        tracheophony: (json.containsKey("tracheophony") ? json["tracheophony"] : throw FormatException('Missing required property')),
+        unappositely: (json.containsKey("unappositely") ? json["unappositely"] : throw FormatException('Missing required property')),
+        unclothedly: (json.containsKey("unclothedly") ? json["unclothedly"] : throw FormatException('Missing required property')),
+        unimplied: (json.containsKey("unimplied") ? json["unimplied"] : throw FormatException('Missing required property')),
+        unsyncopated: (json.containsKey("unsyncopated") ? json["unsyncopated"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -432,7 +432,7 @@ class QuebrachineClass {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -694,26 +694,26 @@ class RewriteClass {
     });
 
     factory RewriteClass.fromJson(Map<String, dynamic> json) => RewriteClass(
-        accountancy: json["accountancy"],
-        cacotrophic: json["cacotrophic"],
-        contest: json["contest"],
-        couthily: json["couthily"],
-        falculate: json["falculate"],
-        foreseize: json["foreseize"],
-        hyades: json["Hyades"],
-        lemnad: json["lemnad"],
-        monotheistically: json["monotheistically"],
-        nonflying: json["nonflying"],
-        ptenoglossa: json["Ptenoglossa"],
-        repatch: json["repatch"],
-        rodman: json["rodman"],
-        strung: json["strung"],
-        titmal: json["titmal"],
-        twalpennyworth: json["twalpennyworth"],
-        unblamable: json["unblamable"],
-        vertical: json["vertical"],
-        whiggification: json["Whiggification"],
-        yardman: json["yardman"],
+        accountancy: (json.containsKey("accountancy") ? json["accountancy"] : throw FormatException('Missing required property')),
+        cacotrophic: (json.containsKey("cacotrophic") ? json["cacotrophic"] : throw FormatException('Missing required property')),
+        contest: (json.containsKey("contest") ? json["contest"] : throw FormatException('Missing required property')),
+        couthily: (json.containsKey("couthily") ? json["couthily"] : throw FormatException('Missing required property')),
+        falculate: (json.containsKey("falculate") ? json["falculate"] : throw FormatException('Missing required property')),
+        foreseize: (json.containsKey("foreseize") ? json["foreseize"] : throw FormatException('Missing required property')),
+        hyades: (json.containsKey("Hyades") ? json["Hyades"] : throw FormatException('Missing required property')),
+        lemnad: (json.containsKey("lemnad") ? json["lemnad"] : throw FormatException('Missing required property')),
+        monotheistically: (json.containsKey("monotheistically") ? json["monotheistically"] : throw FormatException('Missing required property')),
+        nonflying: (json.containsKey("nonflying") ? json["nonflying"] : throw FormatException('Missing required property')),
+        ptenoglossa: (json.containsKey("Ptenoglossa") ? json["Ptenoglossa"] : throw FormatException('Missing required property')),
+        repatch: (json.containsKey("repatch") ? json["repatch"] : throw FormatException('Missing required property')),
+        rodman: (json.containsKey("rodman") ? json["rodman"] : throw FormatException('Missing required property')),
+        strung: (json.containsKey("strung") ? json["strung"] : throw FormatException('Missing required property')),
+        titmal: (json.containsKey("titmal") ? json["titmal"] : throw FormatException('Missing required property')),
+        twalpennyworth: (json.containsKey("twalpennyworth") ? json["twalpennyworth"] : throw FormatException('Missing required property')),
+        unblamable: (json.containsKey("unblamable") ? json["unblamable"] : throw FormatException('Missing required property')),
+        vertical: (json.containsKey("vertical") ? json["vertical"] : throw FormatException('Missing required property')),
+        whiggification: (json.containsKey("Whiggification") ? json["Whiggification"] : throw FormatException('Missing required property')),
+        yardman: (json.containsKey("yardman") ? json["yardman"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -786,26 +786,26 @@ class SantirClass {
     });
 
     factory SantirClass.fromJson(Map<String, dynamic> json) => SantirClass(
-        admiredly: json["admiredly"],
-        demicaponier: json["demicaponier"],
-        epitympanic: json["epitympanic"],
-        investitor: json["investitor"],
-        lupiform: json["lupiform"],
-        monoflagellate: json["monoflagellate"],
-        paleoethnic: json["paleoethnic"],
-        prediscountable: json["prediscountable"],
-        rhetoricals: json["rhetoricals"],
-        roomth: json["roomth"],
-        saccharose: json["saccharose"],
-        septonasal: json["septonasal"],
-        serpenticide: json["serpenticide"],
-        setarious: json["setarious"],
-        spaework: json["spaework"],
-        stylite: json["stylite"],
-        suessiones: json["Suessiones"],
-        timelily: json["timelily"],
-        unprofaned: json["unprofaned"],
-        vorticular: json["vorticular"],
+        admiredly: (json.containsKey("admiredly") ? json["admiredly"] : throw FormatException('Missing required property')),
+        demicaponier: (json.containsKey("demicaponier") ? json["demicaponier"] : throw FormatException('Missing required property')),
+        epitympanic: (json.containsKey("epitympanic") ? json["epitympanic"] : throw FormatException('Missing required property')),
+        investitor: (json.containsKey("investitor") ? json["investitor"] : throw FormatException('Missing required property')),
+        lupiform: (json.containsKey("lupiform") ? json["lupiform"] : throw FormatException('Missing required property')),
+        monoflagellate: (json.containsKey("monoflagellate") ? json["monoflagellate"] : throw FormatException('Missing required property')),
+        paleoethnic: (json.containsKey("paleoethnic") ? json["paleoethnic"] : throw FormatException('Missing required property')),
+        prediscountable: (json.containsKey("prediscountable") ? json["prediscountable"] : throw FormatException('Missing required property')),
+        rhetoricals: (json.containsKey("rhetoricals") ? json["rhetoricals"] : throw FormatException('Missing required property')),
+        roomth: (json.containsKey("roomth") ? json["roomth"] : throw FormatException('Missing required property')),
+        saccharose: (json.containsKey("saccharose") ? json["saccharose"] : throw FormatException('Missing required property')),
+        septonasal: (json.containsKey("septonasal") ? json["septonasal"] : throw FormatException('Missing required property')),
+        serpenticide: (json.containsKey("serpenticide") ? json["serpenticide"] : throw FormatException('Missing required property')),
+        setarious: (json.containsKey("setarious") ? json["setarious"] : throw FormatException('Missing required property')),
+        spaework: (json.containsKey("spaework") ? json["spaework"] : throw FormatException('Missing required property')),
+        stylite: (json.containsKey("stylite") ? json["stylite"] : throw FormatException('Missing required property')),
+        suessiones: (json.containsKey("Suessiones") ? json["Suessiones"] : throw FormatException('Missing required property')),
+        timelily: (json.containsKey("timelily") ? json["timelily"] : throw FormatException('Missing required property')),
+        unprofaned: (json.containsKey("unprofaned") ? json["unprofaned"] : throw FormatException('Missing required property')),
+        vorticular: (json.containsKey("vorticular") ? json["vorticular"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -990,26 +990,26 @@ class Scatty {
     });
 
     factory Scatty.fromJson(Map<String, dynamic> json) => Scatty(
-        aeriferous: json["aeriferous"],
-        antical: json["antical"],
-        antighostism: json["antighostism"],
-        arcanum: json["arcanum"],
-        autotrophy: json["autotrophy"],
-        baronial: json["baronial"],
-        caffeine: json["caffeine"],
-        gorgoniacean: json["gorgoniacean"],
-        heroical: json["heroical"],
-        hydropical: json["hydropical"],
-        mechanology: json["mechanology"],
-        musicopoetic: json["musicopoetic"],
-        officiality: json["officiality"],
-        oftentimes: json["oftentimes"],
-        ophthalmotonometer: json["ophthalmotonometer"],
-        reflectively: json["reflectively"],
-        springer: json["springer"],
-        tabasco: json["Tabasco"],
-        teleianthous: json["teleianthous"],
-        uncombated: json["uncombated"],
+        aeriferous: (json.containsKey("aeriferous") ? json["aeriferous"] : throw FormatException('Missing required property')),
+        antical: (json.containsKey("antical") ? json["antical"] : throw FormatException('Missing required property')),
+        antighostism: (json.containsKey("antighostism") ? json["antighostism"] : throw FormatException('Missing required property')),
+        arcanum: (json.containsKey("arcanum") ? json["arcanum"] : throw FormatException('Missing required property')),
+        autotrophy: (json.containsKey("autotrophy") ? json["autotrophy"] : throw FormatException('Missing required property')),
+        baronial: (json.containsKey("baronial") ? json["baronial"] : throw FormatException('Missing required property')),
+        caffeine: (json.containsKey("caffeine") ? json["caffeine"] : throw FormatException('Missing required property')),
+        gorgoniacean: (json.containsKey("gorgoniacean") ? json["gorgoniacean"] : throw FormatException('Missing required property')),
+        heroical: (json.containsKey("heroical") ? json["heroical"] : throw FormatException('Missing required property')),
+        hydropical: (json.containsKey("hydropical") ? json["hydropical"] : throw FormatException('Missing required property')),
+        mechanology: (json.containsKey("mechanology") ? json["mechanology"] : throw FormatException('Missing required property')),
+        musicopoetic: (json.containsKey("musicopoetic") ? json["musicopoetic"] : throw FormatException('Missing required property')),
+        officiality: (json.containsKey("officiality") ? json["officiality"] : throw FormatException('Missing required property')),
+        oftentimes: (json.containsKey("oftentimes") ? json["oftentimes"] : throw FormatException('Missing required property')),
+        ophthalmotonometer: (json.containsKey("ophthalmotonometer") ? json["ophthalmotonometer"] : throw FormatException('Missing required property')),
+        reflectively: (json.containsKey("reflectively") ? json["reflectively"] : throw FormatException('Missing required property')),
+        springer: (json.containsKey("springer") ? json["springer"] : throw FormatException('Missing required property')),
+        tabasco: (json.containsKey("Tabasco") ? json["Tabasco"] : throw FormatException('Missing required property')),
+        teleianthous: (json.containsKey("teleianthous") ? json["teleianthous"] : throw FormatException('Missing required property')),
+        uncombated: (json.containsKey("uncombated") ? json["uncombated"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1082,26 +1082,26 @@ class SisteringClass {
     });
 
     factory SisteringClass.fromJson(Map<String, dynamic> json) => SisteringClass(
-        amphicarpic: json["amphicarpic"],
-        chianti: json["Chianti"],
-        frigorific: json["frigorific"],
-        haplomi: json["Haplomi"],
-        hyperkinesis: json["hyperkinesis"],
-        laudable: json["laudable"],
-        madwoman: json["madwoman"],
-        maimedly: json["maimedly"],
-        micropterygidae: json["Micropterygidae"],
-        microrhabdus: json["microrhabdus"],
-        nondense: json["nondense"],
-        phlebemphraxis: json["phlebemphraxis"],
-        redsear: json["redsear"],
-        schismatical: json["schismatical"],
-        tartryl: json["tartryl"],
-        unabhorred: json["unabhorred"],
-        undeliberateness: json["undeliberateness"],
-        unmixable: json["unmixable"],
-        untruckling: json["untruckling"],
-        vineal: json["vineal"],
+        amphicarpic: (json.containsKey("amphicarpic") ? json["amphicarpic"] : throw FormatException('Missing required property')),
+        chianti: (json.containsKey("Chianti") ? json["Chianti"] : throw FormatException('Missing required property')),
+        frigorific: (json.containsKey("frigorific") ? json["frigorific"] : throw FormatException('Missing required property')),
+        haplomi: (json.containsKey("Haplomi") ? json["Haplomi"] : throw FormatException('Missing required property')),
+        hyperkinesis: (json.containsKey("hyperkinesis") ? json["hyperkinesis"] : throw FormatException('Missing required property')),
+        laudable: (json.containsKey("laudable") ? json["laudable"] : throw FormatException('Missing required property')),
+        madwoman: (json.containsKey("madwoman") ? json["madwoman"] : throw FormatException('Missing required property')),
+        maimedly: (json.containsKey("maimedly") ? json["maimedly"] : throw FormatException('Missing required property')),
+        micropterygidae: (json.containsKey("Micropterygidae") ? json["Micropterygidae"] : throw FormatException('Missing required property')),
+        microrhabdus: (json.containsKey("microrhabdus") ? json["microrhabdus"] : throw FormatException('Missing required property')),
+        nondense: (json.containsKey("nondense") ? json["nondense"] : throw FormatException('Missing required property')),
+        phlebemphraxis: (json.containsKey("phlebemphraxis") ? json["phlebemphraxis"] : throw FormatException('Missing required property')),
+        redsear: (json.containsKey("redsear") ? json["redsear"] : throw FormatException('Missing required property')),
+        schismatical: (json.containsKey("schismatical") ? json["schismatical"] : throw FormatException('Missing required property')),
+        tartryl: (json.containsKey("tartryl") ? json["tartryl"] : throw FormatException('Missing required property')),
+        unabhorred: (json.containsKey("unabhorred") ? json["unabhorred"] : throw FormatException('Missing required property')),
+        undeliberateness: (json.containsKey("undeliberateness") ? json["undeliberateness"] : throw FormatException('Missing required property')),
+        unmixable: (json.containsKey("unmixable") ? json["unmixable"] : throw FormatException('Missing required property')),
+        untruckling: (json.containsKey("untruckling") ? json["untruckling"] : throw FormatException('Missing required property')),
+        vineal: (json.containsKey("vineal") ? json["vineal"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1622,26 +1622,26 @@ class UnstressedClass {
     });
 
     factory UnstressedClass.fromJson(Map<String, dynamic> json) => UnstressedClass(
-        alain: json["Alain"],
-        amphirhina: json["Amphirhina"],
-        antimachinery: json["antimachinery"],
-        coldish: json["coldish"],
-        crantara: json["crantara"],
-        distinguishing: json["distinguishing"],
-        elytroposis: json["elytroposis"],
-        gentianwort: json["gentianwort"],
-        heliosis: json["heliosis"],
-        instrumental: json["instrumental"],
-        introinflection: json["introinflection"],
-        kala: json["kala"],
-        lincolnian: json["Lincolnian"],
-        metad: json["metad"],
-        sarcophilus: json["Sarcophilus"],
-        swingingly: json["swingingly"],
-        unconformity: json["unconformity"],
-        undecreed: json["undecreed"],
-        venerable: json["venerable"],
-        vowellessness: json["vowellessness"],
+        alain: (json.containsKey("Alain") ? json["Alain"] : throw FormatException('Missing required property')),
+        amphirhina: (json.containsKey("Amphirhina") ? json["Amphirhina"] : throw FormatException('Missing required property')),
+        antimachinery: (json.containsKey("antimachinery") ? json["antimachinery"] : throw FormatException('Missing required property')),
+        coldish: (json.containsKey("coldish") ? json["coldish"] : throw FormatException('Missing required property')),
+        crantara: (json.containsKey("crantara") ? json["crantara"] : throw FormatException('Missing required property')),
+        distinguishing: (json.containsKey("distinguishing") ? json["distinguishing"] : throw FormatException('Missing required property')),
+        elytroposis: (json.containsKey("elytroposis") ? json["elytroposis"] : throw FormatException('Missing required property')),
+        gentianwort: (json.containsKey("gentianwort") ? json["gentianwort"] : throw FormatException('Missing required property')),
+        heliosis: (json.containsKey("heliosis") ? json["heliosis"] : throw FormatException('Missing required property')),
+        instrumental: (json.containsKey("instrumental") ? json["instrumental"] : throw FormatException('Missing required property')),
+        introinflection: (json.containsKey("introinflection") ? json["introinflection"] : throw FormatException('Missing required property')),
+        kala: (json.containsKey("kala") ? json["kala"] : throw FormatException('Missing required property')),
+        lincolnian: (json.containsKey("Lincolnian") ? json["Lincolnian"] : throw FormatException('Missing required property')),
+        metad: (json.containsKey("metad") ? json["metad"] : throw FormatException('Missing required property')),
+        sarcophilus: (json.containsKey("Sarcophilus") ? json["Sarcophilus"] : throw FormatException('Missing required property')),
+        swingingly: (json.containsKey("swingingly") ? json["swingingly"] : throw FormatException('Missing required property')),
+        unconformity: (json.containsKey("unconformity") ? json["unconformity"] : throw FormatException('Missing required property')),
+        undecreed: (json.containsKey("undecreed") ? json["undecreed"] : throw FormatException('Missing required property')),
+        venerable: (json.containsKey("venerable") ? json["venerable"] : throw FormatException('Missing required property')),
+        vowellessness: (json.containsKey("vowellessness") ? json["vowellessness"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1714,26 +1714,26 @@ class WrothyClass {
     });
 
     factory WrothyClass.fromJson(Map<String, dynamic> json) => WrothyClass(
-        aeschynanthus: json["Aeschynanthus"],
-        aquiferous: json["aquiferous"],
-        cheapener: json["cheapener"],
-        enumeration: json["enumeration"],
-        ephesine: json["Ephesine"],
-        escadrille: json["escadrille"],
-        estrous: json["estrous"],
-        interestedly: json["interestedly"],
-        katakinetomer: json["katakinetomer"],
-        mortification: json["mortification"],
-        morula: json["morula"],
-        orthosymmetrical: json["orthosymmetrical"],
-        overbark: json["overbark"],
-        politist: json["politist"],
-        qualified: json["qualified"],
-        sphenomalar: json["sphenomalar"],
-        throatful: json["throatful"],
-        transhumance: json["transhumance"],
-        triandrian: json["triandrian"],
-        unbooked: json["unbooked"],
+        aeschynanthus: (json.containsKey("Aeschynanthus") ? json["Aeschynanthus"] : throw FormatException('Missing required property')),
+        aquiferous: (json.containsKey("aquiferous") ? json["aquiferous"] : throw FormatException('Missing required property')),
+        cheapener: (json.containsKey("cheapener") ? json["cheapener"] : throw FormatException('Missing required property')),
+        enumeration: (json.containsKey("enumeration") ? json["enumeration"] : throw FormatException('Missing required property')),
+        ephesine: (json.containsKey("Ephesine") ? json["Ephesine"] : throw FormatException('Missing required property')),
+        escadrille: (json.containsKey("escadrille") ? json["escadrille"] : throw FormatException('Missing required property')),
+        estrous: (json.containsKey("estrous") ? json["estrous"] : throw FormatException('Missing required property')),
+        interestedly: (json.containsKey("interestedly") ? json["interestedly"] : throw FormatException('Missing required property')),
+        katakinetomer: (json.containsKey("katakinetomer") ? json["katakinetomer"] : throw FormatException('Missing required property')),
+        mortification: (json.containsKey("mortification") ? json["mortification"] : throw FormatException('Missing required property')),
+        morula: (json.containsKey("morula") ? json["morula"] : throw FormatException('Missing required property')),
+        orthosymmetrical: (json.containsKey("orthosymmetrical") ? json["orthosymmetrical"] : throw FormatException('Missing required property')),
+        overbark: (json.containsKey("overbark") ? json["overbark"] : throw FormatException('Missing required property')),
+        politist: (json.containsKey("politist") ? json["politist"] : throw FormatException('Missing required property')),
+        qualified: (json.containsKey("qualified") ? json["qualified"] : throw FormatException('Missing required property')),
+        sphenomalar: (json.containsKey("sphenomalar") ? json["sphenomalar"] : throw FormatException('Missing required property')),
+        throatful: (json.containsKey("throatful") ? json["throatful"] : throw FormatException('Missing required property')),
+        transhumance: (json.containsKey("transhumance") ? json["transhumance"] : throw FormatException('Missing required property')),
+        triandrian: (json.containsKey("triandrian") ? json["triandrian"] : throw FormatException('Missing required property')),
+        unbooked: (json.containsKey("unbooked") ? json["unbooked"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart b/head/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart
index dbdb05d..bc2fafc 100644
--- a/base/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/combinations4.json/final-props-false--58a791807e0c/TopLevel.dart
@@ -274,26 +274,26 @@ class PulpitismClass {
     });
 
     factory PulpitismClass.fromJson(Map<String, dynamic> json) => PulpitismClass(
-        abnet: json["abnet"],
-        buckhorn: json["buckhorn"],
-        calciform: json["calciform"],
-        chelophore: json["chelophore"],
-        cogitation: json["cogitation"],
-        decreeable: json["decreeable"],
-        despicable: json["despicable"],
-        isodiazo: json["isodiazo"],
-        jadedly: json["jadedly"],
-        leptochlorite: json["leptochlorite"],
-        nursling: json["nursling"],
-        palamedean: json["palamedean"],
-        photoheliograph: json["photoheliograph"],
-        pipewood: json["pipewood"],
-        roberd: json["roberd"],
-        statable: json["statable"],
-        superassume: json["superassume"],
-        syllabe: json["syllabe"],
-        toughhead: json["toughhead"],
-        underburn: json["underburn"],
+        abnet: (json.containsKey("abnet") ? json["abnet"] : throw FormatException('Missing required property')),
+        buckhorn: (json.containsKey("buckhorn") ? json["buckhorn"] : throw FormatException('Missing required property')),
+        calciform: (json.containsKey("calciform") ? json["calciform"] : throw FormatException('Missing required property')),
+        chelophore: (json.containsKey("chelophore") ? json["chelophore"] : throw FormatException('Missing required property')),
+        cogitation: (json.containsKey("cogitation") ? json["cogitation"] : throw FormatException('Missing required property')),
+        decreeable: (json.containsKey("decreeable") ? json["decreeable"] : throw FormatException('Missing required property')),
+        despicable: (json.containsKey("despicable") ? json["despicable"] : throw FormatException('Missing required property')),
+        isodiazo: (json.containsKey("isodiazo") ? json["isodiazo"] : throw FormatException('Missing required property')),
+        jadedly: (json.containsKey("jadedly") ? json["jadedly"] : throw FormatException('Missing required property')),
+        leptochlorite: (json.containsKey("leptochlorite") ? json["leptochlorite"] : throw FormatException('Missing required property')),
+        nursling: (json.containsKey("nursling") ? json["nursling"] : throw FormatException('Missing required property')),
+        palamedean: (json.containsKey("palamedean") ? json["palamedean"] : throw FormatException('Missing required property')),
+        photoheliograph: (json.containsKey("photoheliograph") ? json["photoheliograph"] : throw FormatException('Missing required property')),
+        pipewood: (json.containsKey("pipewood") ? json["pipewood"] : throw FormatException('Missing required property')),
+        roberd: (json.containsKey("roberd") ? json["roberd"] : throw FormatException('Missing required property')),
+        statable: (json.containsKey("statable") ? json["statable"] : throw FormatException('Missing required property')),
+        superassume: (json.containsKey("superassume") ? json["superassume"] : throw FormatException('Missing required property')),
+        syllabe: (json.containsKey("syllabe") ? json["syllabe"] : throw FormatException('Missing required property')),
+        toughhead: (json.containsKey("toughhead") ? json["toughhead"] : throw FormatException('Missing required property')),
+        underburn: (json.containsKey("underburn") ? json["underburn"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -366,26 +366,26 @@ class PyodermiaClass {
     });
 
     factory PyodermiaClass.fromJson(Map<String, dynamic> json) => PyodermiaClass(
-        aphoristically: json["aphoristically"],
-        apophyllous: json["apophyllous"],
-        cognize: json["cognize"],
-        dermonosology: json["dermonosology"],
-        gyppo: json["Gyppo"],
-        ither: json["ither"],
-        juglandaceous: json["juglandaceous"],
-        litho: json["litho"],
-        macropterous: json["macropterous"],
-        photographer: json["photographer"],
-        romancing: json["romancing"],
-        rumness: json["rumness"],
-        somniloquist: json["somniloquist"],
-        stressfully: json["stressfully"],
-        tactically: json["tactically"],
-        tracheophony: json["tracheophony"],
-        unappositely: json["unappositely"],
-        unclothedly: json["unclothedly"],
-        unimplied: json["unimplied"],
-        unsyncopated: json["unsyncopated"],
+        aphoristically: (json.containsKey("aphoristically") ? json["aphoristically"] : throw FormatException('Missing required property')),
+        apophyllous: (json.containsKey("apophyllous") ? json["apophyllous"] : throw FormatException('Missing required property')),
+        cognize: (json.containsKey("cognize") ? json["cognize"] : throw FormatException('Missing required property')),
+        dermonosology: (json.containsKey("dermonosology") ? json["dermonosology"] : throw FormatException('Missing required property')),
+        gyppo: (json.containsKey("Gyppo") ? json["Gyppo"] : throw FormatException('Missing required property')),
+        ither: (json.containsKey("ither") ? json["ither"] : throw FormatException('Missing required property')),
+        juglandaceous: (json.containsKey("juglandaceous") ? json["juglandaceous"] : throw FormatException('Missing required property')),
+        litho: (json.containsKey("litho") ? json["litho"] : throw FormatException('Missing required property')),
+        macropterous: (json.containsKey("macropterous") ? json["macropterous"] : throw FormatException('Missing required property')),
+        photographer: (json.containsKey("photographer") ? json["photographer"] : throw FormatException('Missing required property')),
+        romancing: (json.containsKey("romancing") ? json["romancing"] : throw FormatException('Missing required property')),
+        rumness: (json.containsKey("rumness") ? json["rumness"] : throw FormatException('Missing required property')),
+        somniloquist: (json.containsKey("somniloquist") ? json["somniloquist"] : throw FormatException('Missing required property')),
+        stressfully: (json.containsKey("stressfully") ? json["stressfully"] : throw FormatException('Missing required property')),
+        tactically: (json.containsKey("tactically") ? json["tactically"] : throw FormatException('Missing required property')),
+        tracheophony: (json.containsKey("tracheophony") ? json["tracheophony"] : throw FormatException('Missing required property')),
+        unappositely: (json.containsKey("unappositely") ? json["unappositely"] : throw FormatException('Missing required property')),
+        unclothedly: (json.containsKey("unclothedly") ? json["unclothedly"] : throw FormatException('Missing required property')),
+        unimplied: (json.containsKey("unimplied") ? json["unimplied"] : throw FormatException('Missing required property')),
+        unsyncopated: (json.containsKey("unsyncopated") ? json["unsyncopated"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -432,7 +432,7 @@ class QuebrachineClass {
         chirotherium: json["Chirotherium"],
         disdiapason: json["disdiapason"],
         homocerc: json["homocerc"],
-        nonbookish: json["nonbookish"],
+        nonbookish: (json.containsKey("nonbookish") ? json["nonbookish"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -694,26 +694,26 @@ class RewriteClass {
     });
 
     factory RewriteClass.fromJson(Map<String, dynamic> json) => RewriteClass(
-        accountancy: json["accountancy"],
-        cacotrophic: json["cacotrophic"],
-        contest: json["contest"],
-        couthily: json["couthily"],
-        falculate: json["falculate"],
-        foreseize: json["foreseize"],
-        hyades: json["Hyades"],
-        lemnad: json["lemnad"],
-        monotheistically: json["monotheistically"],
-        nonflying: json["nonflying"],
-        ptenoglossa: json["Ptenoglossa"],
-        repatch: json["repatch"],
-        rodman: json["rodman"],
-        strung: json["strung"],
-        titmal: json["titmal"],
-        twalpennyworth: json["twalpennyworth"],
-        unblamable: json["unblamable"],
-        vertical: json["vertical"],
-        whiggification: json["Whiggification"],
-        yardman: json["yardman"],
+        accountancy: (json.containsKey("accountancy") ? json["accountancy"] : throw FormatException('Missing required property')),
+        cacotrophic: (json.containsKey("cacotrophic") ? json["cacotrophic"] : throw FormatException('Missing required property')),
+        contest: (json.containsKey("contest") ? json["contest"] : throw FormatException('Missing required property')),
+        couthily: (json.containsKey("couthily") ? json["couthily"] : throw FormatException('Missing required property')),
+        falculate: (json.containsKey("falculate") ? json["falculate"] : throw FormatException('Missing required property')),
+        foreseize: (json.containsKey("foreseize") ? json["foreseize"] : throw FormatException('Missing required property')),
+        hyades: (json.containsKey("Hyades") ? json["Hyades"] : throw FormatException('Missing required property')),
+        lemnad: (json.containsKey("lemnad") ? json["lemnad"] : throw FormatException('Missing required property')),
+        monotheistically: (json.containsKey("monotheistically") ? json["monotheistically"] : throw FormatException('Missing required property')),
+        nonflying: (json.containsKey("nonflying") ? json["nonflying"] : throw FormatException('Missing required property')),
+        ptenoglossa: (json.containsKey("Ptenoglossa") ? json["Ptenoglossa"] : throw FormatException('Missing required property')),
+        repatch: (json.containsKey("repatch") ? json["repatch"] : throw FormatException('Missing required property')),
+        rodman: (json.containsKey("rodman") ? json["rodman"] : throw FormatException('Missing required property')),
+        strung: (json.containsKey("strung") ? json["strung"] : throw FormatException('Missing required property')),
+        titmal: (json.containsKey("titmal") ? json["titmal"] : throw FormatException('Missing required property')),
+        twalpennyworth: (json.containsKey("twalpennyworth") ? json["twalpennyworth"] : throw FormatException('Missing required property')),
+        unblamable: (json.containsKey("unblamable") ? json["unblamable"] : throw FormatException('Missing required property')),
+        vertical: (json.containsKey("vertical") ? json["vertical"] : throw FormatException('Missing required property')),
+        whiggification: (json.containsKey("Whiggification") ? json["Whiggification"] : throw FormatException('Missing required property')),
+        yardman: (json.containsKey("yardman") ? json["yardman"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -786,26 +786,26 @@ class SantirClass {
     });
 
     factory SantirClass.fromJson(Map<String, dynamic> json) => SantirClass(
-        admiredly: json["admiredly"],
-        demicaponier: json["demicaponier"],
-        epitympanic: json["epitympanic"],
-        investitor: json["investitor"],
-        lupiform: json["lupiform"],
-        monoflagellate: json["monoflagellate"],
-        paleoethnic: json["paleoethnic"],
-        prediscountable: json["prediscountable"],
-        rhetoricals: json["rhetoricals"],
-        roomth: json["roomth"],
-        saccharose: json["saccharose"],
-        septonasal: json["septonasal"],
-        serpenticide: json["serpenticide"],
-        setarious: json["setarious"],
-        spaework: json["spaework"],
-        stylite: json["stylite"],
-        suessiones: json["Suessiones"],
-        timelily: json["timelily"],
-        unprofaned: json["unprofaned"],
-        vorticular: json["vorticular"],
+        admiredly: (json.containsKey("admiredly") ? json["admiredly"] : throw FormatException('Missing required property')),
+        demicaponier: (json.containsKey("demicaponier") ? json["demicaponier"] : throw FormatException('Missing required property')),
+        epitympanic: (json.containsKey("epitympanic") ? json["epitympanic"] : throw FormatException('Missing required property')),
+        investitor: (json.containsKey("investitor") ? json["investitor"] : throw FormatException('Missing required property')),
+        lupiform: (json.containsKey("lupiform") ? json["lupiform"] : throw FormatException('Missing required property')),
+        monoflagellate: (json.containsKey("monoflagellate") ? json["monoflagellate"] : throw FormatException('Missing required property')),
+        paleoethnic: (json.containsKey("paleoethnic") ? json["paleoethnic"] : throw FormatException('Missing required property')),
+        prediscountable: (json.containsKey("prediscountable") ? json["prediscountable"] : throw FormatException('Missing required property')),
+        rhetoricals: (json.containsKey("rhetoricals") ? json["rhetoricals"] : throw FormatException('Missing required property')),
+        roomth: (json.containsKey("roomth") ? json["roomth"] : throw FormatException('Missing required property')),
+        saccharose: (json.containsKey("saccharose") ? json["saccharose"] : throw FormatException('Missing required property')),
+        septonasal: (json.containsKey("septonasal") ? json["septonasal"] : throw FormatException('Missing required property')),
+        serpenticide: (json.containsKey("serpenticide") ? json["serpenticide"] : throw FormatException('Missing required property')),
+        setarious: (json.containsKey("setarious") ? json["setarious"] : throw FormatException('Missing required property')),
+        spaework: (json.containsKey("spaework") ? json["spaework"] : throw FormatException('Missing required property')),
+        stylite: (json.containsKey("stylite") ? json["stylite"] : throw FormatException('Missing required property')),
+        suessiones: (json.containsKey("Suessiones") ? json["Suessiones"] : throw FormatException('Missing required property')),
+        timelily: (json.containsKey("timelily") ? json["timelily"] : throw FormatException('Missing required property')),
+        unprofaned: (json.containsKey("unprofaned") ? json["unprofaned"] : throw FormatException('Missing required property')),
+        vorticular: (json.containsKey("vorticular") ? json["vorticular"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -990,26 +990,26 @@ class Scatty {
     });
 
     factory Scatty.fromJson(Map<String, dynamic> json) => Scatty(
-        aeriferous: json["aeriferous"],
-        antical: json["antical"],
-        antighostism: json["antighostism"],
-        arcanum: json["arcanum"],
-        autotrophy: json["autotrophy"],
-        baronial: json["baronial"],
-        caffeine: json["caffeine"],
-        gorgoniacean: json["gorgoniacean"],
-        heroical: json["heroical"],
-        hydropical: json["hydropical"],
-        mechanology: json["mechanology"],
-        musicopoetic: json["musicopoetic"],
-        officiality: json["officiality"],
-        oftentimes: json["oftentimes"],
-        ophthalmotonometer: json["ophthalmotonometer"],
-        reflectively: json["reflectively"],
-        springer: json["springer"],
-        tabasco: json["Tabasco"],
-        teleianthous: json["teleianthous"],
-        uncombated: json["uncombated"],
+        aeriferous: (json.containsKey("aeriferous") ? json["aeriferous"] : throw FormatException('Missing required property')),
+        antical: (json.containsKey("antical") ? json["antical"] : throw FormatException('Missing required property')),
+        antighostism: (json.containsKey("antighostism") ? json["antighostism"] : throw FormatException('Missing required property')),
+        arcanum: (json.containsKey("arcanum") ? json["arcanum"] : throw FormatException('Missing required property')),
+        autotrophy: (json.containsKey("autotrophy") ? json["autotrophy"] : throw FormatException('Missing required property')),
+        baronial: (json.containsKey("baronial") ? json["baronial"] : throw FormatException('Missing required property')),
+        caffeine: (json.containsKey("caffeine") ? json["caffeine"] : throw FormatException('Missing required property')),
+        gorgoniacean: (json.containsKey("gorgoniacean") ? json["gorgoniacean"] : throw FormatException('Missing required property')),
+        heroical: (json.containsKey("heroical") ? json["heroical"] : throw FormatException('Missing required property')),
+        hydropical: (json.containsKey("hydropical") ? json["hydropical"] : throw FormatException('Missing required property')),
+        mechanology: (json.containsKey("mechanology") ? json["mechanology"] : throw FormatException('Missing required property')),
+        musicopoetic: (json.containsKey("musicopoetic") ? json["musicopoetic"] : throw FormatException('Missing required property')),
+        officiality: (json.containsKey("officiality") ? json["officiality"] : throw FormatException('Missing required property')),
+        oftentimes: (json.containsKey("oftentimes") ? json["oftentimes"] : throw FormatException('Missing required property')),
+        ophthalmotonometer: (json.containsKey("ophthalmotonometer") ? json["ophthalmotonometer"] : throw FormatException('Missing required property')),
+        reflectively: (json.containsKey("reflectively") ? json["reflectively"] : throw FormatException('Missing required property')),
+        springer: (json.containsKey("springer") ? json["springer"] : throw FormatException('Missing required property')),
+        tabasco: (json.containsKey("Tabasco") ? json["Tabasco"] : throw FormatException('Missing required property')),
+        teleianthous: (json.containsKey("teleianthous") ? json["teleianthous"] : throw FormatException('Missing required property')),
+        uncombated: (json.containsKey("uncombated") ? json["uncombated"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1082,26 +1082,26 @@ class SisteringClass {
     });
 
     factory SisteringClass.fromJson(Map<String, dynamic> json) => SisteringClass(
-        amphicarpic: json["amphicarpic"],
-        chianti: json["Chianti"],
-        frigorific: json["frigorific"],
-        haplomi: json["Haplomi"],
-        hyperkinesis: json["hyperkinesis"],
-        laudable: json["laudable"],
-        madwoman: json["madwoman"],
-        maimedly: json["maimedly"],
-        micropterygidae: json["Micropterygidae"],
-        microrhabdus: json["microrhabdus"],
-        nondense: json["nondense"],
-        phlebemphraxis: json["phlebemphraxis"],
-        redsear: json["redsear"],
-        schismatical: json["schismatical"],
-        tartryl: json["tartryl"],
-        unabhorred: json["unabhorred"],
-        undeliberateness: json["undeliberateness"],
-        unmixable: json["unmixable"],
-        untruckling: json["untruckling"],
-        vineal: json["vineal"],
+        amphicarpic: (json.containsKey("amphicarpic") ? json["amphicarpic"] : throw FormatException('Missing required property')),
+        chianti: (json.containsKey("Chianti") ? json["Chianti"] : throw FormatException('Missing required property')),
+        frigorific: (json.containsKey("frigorific") ? json["frigorific"] : throw FormatException('Missing required property')),
+        haplomi: (json.containsKey("Haplomi") ? json["Haplomi"] : throw FormatException('Missing required property')),
+        hyperkinesis: (json.containsKey("hyperkinesis") ? json["hyperkinesis"] : throw FormatException('Missing required property')),
+        laudable: (json.containsKey("laudable") ? json["laudable"] : throw FormatException('Missing required property')),
+        madwoman: (json.containsKey("madwoman") ? json["madwoman"] : throw FormatException('Missing required property')),
+        maimedly: (json.containsKey("maimedly") ? json["maimedly"] : throw FormatException('Missing required property')),
+        micropterygidae: (json.containsKey("Micropterygidae") ? json["Micropterygidae"] : throw FormatException('Missing required property')),
+        microrhabdus: (json.containsKey("microrhabdus") ? json["microrhabdus"] : throw FormatException('Missing required property')),
+        nondense: (json.containsKey("nondense") ? json["nondense"] : throw FormatException('Missing required property')),
+        phlebemphraxis: (json.containsKey("phlebemphraxis") ? json["phlebemphraxis"] : throw FormatException('Missing required property')),
+        redsear: (json.containsKey("redsear") ? json["redsear"] : throw FormatException('Missing required property')),
+        schismatical: (json.containsKey("schismatical") ? json["schismatical"] : throw FormatException('Missing required property')),
+        tartryl: (json.containsKey("tartryl") ? json["tartryl"] : throw FormatException('Missing required property')),
+        unabhorred: (json.containsKey("unabhorred") ? json["unabhorred"] : throw FormatException('Missing required property')),
+        undeliberateness: (json.containsKey("undeliberateness") ? json["undeliberateness"] : throw FormatException('Missing required property')),
+        unmixable: (json.containsKey("unmixable") ? json["unmixable"] : throw FormatException('Missing required property')),
+        untruckling: (json.containsKey("untruckling") ? json["untruckling"] : throw FormatException('Missing required property')),
+        vineal: (json.containsKey("vineal") ? json["vineal"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1622,26 +1622,26 @@ class UnstressedClass {
     });
 
     factory UnstressedClass.fromJson(Map<String, dynamic> json) => UnstressedClass(
-        alain: json["Alain"],
-        amphirhina: json["Amphirhina"],
-        antimachinery: json["antimachinery"],
-        coldish: json["coldish"],
-        crantara: json["crantara"],
-        distinguishing: json["distinguishing"],
-        elytroposis: json["elytroposis"],
-        gentianwort: json["gentianwort"],
-        heliosis: json["heliosis"],
-        instrumental: json["instrumental"],
-        introinflection: json["introinflection"],
-        kala: json["kala"],
-        lincolnian: json["Lincolnian"],
-        metad: json["metad"],
-        sarcophilus: json["Sarcophilus"],
-        swingingly: json["swingingly"],
-        unconformity: json["unconformity"],
-        undecreed: json["undecreed"],
-        venerable: json["venerable"],
-        vowellessness: json["vowellessness"],
+        alain: (json.containsKey("Alain") ? json["Alain"] : throw FormatException('Missing required property')),
+        amphirhina: (json.containsKey("Amphirhina") ? json["Amphirhina"] : throw FormatException('Missing required property')),
+        antimachinery: (json.containsKey("antimachinery") ? json["antimachinery"] : throw FormatException('Missing required property')),
+        coldish: (json.containsKey("coldish") ? json["coldish"] : throw FormatException('Missing required property')),
+        crantara: (json.containsKey("crantara") ? json["crantara"] : throw FormatException('Missing required property')),
+        distinguishing: (json.containsKey("distinguishing") ? json["distinguishing"] : throw FormatException('Missing required property')),
+        elytroposis: (json.containsKey("elytroposis") ? json["elytroposis"] : throw FormatException('Missing required property')),
+        gentianwort: (json.containsKey("gentianwort") ? json["gentianwort"] : throw FormatException('Missing required property')),
+        heliosis: (json.containsKey("heliosis") ? json["heliosis"] : throw FormatException('Missing required property')),
+        instrumental: (json.containsKey("instrumental") ? json["instrumental"] : throw FormatException('Missing required property')),
+        introinflection: (json.containsKey("introinflection") ? json["introinflection"] : throw FormatException('Missing required property')),
+        kala: (json.containsKey("kala") ? json["kala"] : throw FormatException('Missing required property')),
+        lincolnian: (json.containsKey("Lincolnian") ? json["Lincolnian"] : throw FormatException('Missing required property')),
+        metad: (json.containsKey("metad") ? json["metad"] : throw FormatException('Missing required property')),
+        sarcophilus: (json.containsKey("Sarcophilus") ? json["Sarcophilus"] : throw FormatException('Missing required property')),
+        swingingly: (json.containsKey("swingingly") ? json["swingingly"] : throw FormatException('Missing required property')),
+        unconformity: (json.containsKey("unconformity") ? json["unconformity"] : throw FormatException('Missing required property')),
+        undecreed: (json.containsKey("undecreed") ? json["undecreed"] : throw FormatException('Missing required property')),
+        venerable: (json.containsKey("venerable") ? json["venerable"] : throw FormatException('Missing required property')),
+        vowellessness: (json.containsKey("vowellessness") ? json["vowellessness"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
@@ -1714,26 +1714,26 @@ class WrothyClass {
     });
 
     factory WrothyClass.fromJson(Map<String, dynamic> json) => WrothyClass(
-        aeschynanthus: json["Aeschynanthus"],
-        aquiferous: json["aquiferous"],
-        cheapener: json["cheapener"],
-        enumeration: json["enumeration"],
-        ephesine: json["Ephesine"],
-        escadrille: json["escadrille"],
-        estrous: json["estrous"],
-        interestedly: json["interestedly"],
-        katakinetomer: json["katakinetomer"],
-        mortification: json["mortification"],
-        morula: json["morula"],
-        orthosymmetrical: json["orthosymmetrical"],
-        overbark: json["overbark"],
-        politist: json["politist"],
-        qualified: json["qualified"],
-        sphenomalar: json["sphenomalar"],
-        throatful: json["throatful"],
-        transhumance: json["transhumance"],
-        triandrian: json["triandrian"],
-        unbooked: json["unbooked"],
+        aeschynanthus: (json.containsKey("Aeschynanthus") ? json["Aeschynanthus"] : throw FormatException('Missing required property')),
+        aquiferous: (json.containsKey("aquiferous") ? json["aquiferous"] : throw FormatException('Missing required property')),
+        cheapener: (json.containsKey("cheapener") ? json["cheapener"] : throw FormatException('Missing required property')),
+        enumeration: (json.containsKey("enumeration") ? json["enumeration"] : throw FormatException('Missing required property')),
+        ephesine: (json.containsKey("Ephesine") ? json["Ephesine"] : throw FormatException('Missing required property')),
+        escadrille: (json.containsKey("escadrille") ? json["escadrille"] : throw FormatException('Missing required property')),
+        estrous: (json.containsKey("estrous") ? json["estrous"] : throw FormatException('Missing required property')),
+        interestedly: (json.containsKey("interestedly") ? json["interestedly"] : throw FormatException('Missing required property')),
+        katakinetomer: (json.containsKey("katakinetomer") ? json["katakinetomer"] : throw FormatException('Missing required property')),
+        mortification: (json.containsKey("mortification") ? json["mortification"] : throw FormatException('Missing required property')),
+        morula: (json.containsKey("morula") ? json["morula"] : throw FormatException('Missing required property')),
+        orthosymmetrical: (json.containsKey("orthosymmetrical") ? json["orthosymmetrical"] : throw FormatException('Missing required property')),
+        overbark: (json.containsKey("overbark") ? json["overbark"] : throw FormatException('Missing required property')),
+        politist: (json.containsKey("politist") ? json["politist"] : throw FormatException('Missing required property')),
+        qualified: (json.containsKey("qualified") ? json["qualified"] : throw FormatException('Missing required property')),
+        sphenomalar: (json.containsKey("sphenomalar") ? json["sphenomalar"] : throw FormatException('Missing required property')),
+        throatful: (json.containsKey("throatful") ? json["throatful"] : throw FormatException('Missing required property')),
+        transhumance: (json.containsKey("transhumance") ? json["transhumance"] : throw FormatException('Missing required property')),
+        triandrian: (json.containsKey("triandrian") ? json["triandrian"] : throw FormatException('Missing required property')),
+        unbooked: (json.containsKey("unbooked") ? json["unbooked"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/list.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/list.json/default/TopLevel.dart
index 12bef77..83c9492 100644
--- a/base/dart/test/inputs/json/priority/list.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/list.json/default/TopLevel.dart
@@ -19,7 +19,7 @@ class TopLevel {
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         data: json["data"],
-        next: json["next"] == null ? null : TopLevel.fromJson(json["next"]),
+        next: (json.containsKey("next") ? json["next"] : throw FormatException('Missing required property')) == null ? null : TopLevel.fromJson((json.containsKey("next") ? json["next"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.dart
index f5128bb..6ffe2c4 100644
--- a/base/dart/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.dart
@@ -286,7 +286,7 @@ class TopLevel {
         yStructureLonelyFalseJson: json["y_structure_lonely_false.json"],
         yStructureLonelyIntJson: json["y_structure_lonely_int.json"],
         yStructureLonelyNegativeRealJson: json["y_structure_lonely_negative_real.json"]?.toDouble(),
-        yStructureLonelyNullJson: json["y_structure_lonely_null.json"],
+        yStructureLonelyNullJson: (json.containsKey("y_structure_lonely_null.json") ? json["y_structure_lonely_null.json"] : throw FormatException('Missing required property')),
         yStructureLonelyStringJson: json["y_structure_lonely_string.json"],
         yStructureLonelyTrueJson: json["y_structure_lonely_true.json"],
         yStructureStringEmptyJson: json["y_structure_string_empty.json"],
diff --git a/base/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart
index e8eb5a9..36e1339 100644
--- a/base/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/github-events.json/default/TopLevel.dart
@@ -400,10 +400,10 @@ class Issue {
     });
 
     factory Issue.fromJson(Map<String, dynamic> json) => Issue(
-        assignee: json["assignee"],
+        assignee: (json.containsKey("assignee") ? json["assignee"] : throw FormatException('Missing required property')),
         assignees: List<dynamic>.from(json["assignees"].map((x) => x)),
         body: json["body"],
-        closedAt: json["closed_at"] == null ? null : DateTime.parse(json["closed_at"]),
+        closedAt: (json.containsKey("closed_at") ? json["closed_at"] : throw FormatException('Missing required property')) == null ? null : DateTime.parse((json.containsKey("closed_at") ? json["closed_at"] : throw FormatException('Missing required property'))),
         comments: json["comments"],
         commentsUrl: json["comments_url"],
         createdAt: DateTime.parse(json["created_at"]),
@@ -413,7 +413,7 @@ class Issue {
         labels: List<Label>.from(json["labels"].map((x) => Label.fromJson(x))),
         labelsUrl: json["labels_url"],
         locked: json["locked"],
-        milestone: json["milestone"] == null ? null : Milestone.fromJson(json["milestone"]),
+        milestone: (json.containsKey("milestone") ? json["milestone"] : throw FormatException('Missing required property')) == null ? null : Milestone.fromJson((json.containsKey("milestone") ? json["milestone"] : throw FormatException('Missing required property'))),
         number: json["number"],
         pullRequest: json["pull_request"] == null ? null : IssuePullRequest.fromJson(json["pull_request"]),
         repositoryUrl: json["repository_url"],
@@ -518,12 +518,12 @@ class Milestone {
     });
 
     factory Milestone.fromJson(Map<String, dynamic> json) => Milestone(
-        closedAt: json["closed_at"],
+        closedAt: (json.containsKey("closed_at") ? json["closed_at"] : throw FormatException('Missing required property')),
         closedIssues: json["closed_issues"],
         createdAt: DateTime.parse(json["created_at"]),
         creator: User.fromJson(json["creator"]),
         description: json["description"],
-        dueOn: json["due_on"] == null ? null : DateTime.parse(json["due_on"]),
+        dueOn: (json.containsKey("due_on") ? json["due_on"] : throw FormatException('Missing required property')) == null ? null : DateTime.parse((json.containsKey("due_on") ? json["due_on"] : throw FormatException('Missing required property'))),
         htmlUrl: json["html_url"],
         id: json["id"],
         labelsUrl: json["labels_url"],
@@ -671,7 +671,7 @@ class PayloadPullRequest {
 
     factory PayloadPullRequest.fromJson(Map<String, dynamic> json) => PayloadPullRequest(
         additions: json["additions"],
-        assignee: json["assignee"],
+        assignee: (json.containsKey("assignee") ? json["assignee"] : throw FormatException('Missing required property')),
         assignees: List<dynamic>.from(json["assignees"].map((x) => x)),
         base: Base.fromJson(json["base"]),
         body: json["body"],
@@ -692,15 +692,15 @@ class PayloadPullRequest {
         locked: json["locked"],
         maintainerCanModify: json["maintainer_can_modify"],
         mergeCommitSha: json["merge_commit_sha"],
-        mergeable: json["mergeable"],
+        mergeable: (json.containsKey("mergeable") ? json["mergeable"] : throw FormatException('Missing required property')),
         mergeableState: json["mergeable_state"],
         merged: json["merged"],
         mergedAt: DateTime.parse(json["merged_at"]),
         mergedBy: User.fromJson(json["merged_by"]),
-        milestone: json["milestone"],
+        milestone: (json.containsKey("milestone") ? json["milestone"] : throw FormatException('Missing required property')),
         number: json["number"],
         patchUrl: json["patch_url"],
-        rebaseable: json["rebaseable"],
+        rebaseable: (json.containsKey("rebaseable") ? json["rebaseable"] : throw FormatException('Missing required property')),
         requestedReviewers: List<dynamic>.from(json["requested_reviewers"].map((x) => x)),
         reviewCommentUrl: json["review_comment_url"],
         reviewComments: json["review_comments"],
@@ -978,7 +978,7 @@ class BaseRepo {
         languagesUrl: json["languages_url"],
         mergesUrl: json["merges_url"],
         milestonesUrl: json["milestones_url"],
-        mirrorUrl: json["mirror_url"],
+        mirrorUrl: (json.containsKey("mirror_url") ? json["mirror_url"] : throw FormatException('Missing required property')),
         name: json["name"],
         notificationsUrl: json["notifications_url"],
         openIssues: json["open_issues"],
diff --git a/base/dart/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.dart
index e960fe7..cc83b04 100644
--- a/base/dart/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.dart
@@ -48,8 +48,8 @@ class TopLevel {
         doubleValue: json["doubleValue"]?.toDouble(),
         intValue: json["intValue"],
         mapValue: Map.from(json["mapValue"]).map((k, v) => MapEntry<String, int?>(k, v)),
-        nameWithSpaces: json["name with spaces"],
-        nullValue: json["nullValue"],
+        nameWithSpaces: (json.containsKey("name with spaces") ? json["name with spaces"] : throw FormatException('Missing required property')),
+        nullValue: (json.containsKey("nullValue") ? json["nullValue"] : throw FormatException('Missing required property')),
         nullableMapValue: Map.from(json["nullableMapValue"]).map((k, v) => MapEntry<String, int?>(k, v)),
         people: List<PersonElement>.from(json["people"].map((x) => PersonElement.fromJson(x))),
         person: PurplePerson.fromJson(json["person"]),
diff --git a/base/dart/test/inputs/json/samples/null-safe.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/null-safe.json/default/TopLevel.dart
index 73e4e63..2a0496c 100644
--- a/base/dart/test/inputs/json/samples/null-safe.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/null-safe.json/default/TopLevel.dart
@@ -41,7 +41,7 @@ class Item {
         address: json["address"] == null ? null : Address.fromJson(json["address"]),
         createdAt: json["created_at"] == null ? null : DateTime.parse(json["created_at"]),
         name: json["name"],
-        sex: json["sex"],
+        sex: (json.containsKey("sex") ? json["sex"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart
index 758ba3f..0835f6b 100644
--- a/base/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/pokedex.json/default/TopLevel.dart
@@ -71,7 +71,7 @@ class Pokemon {
         height: json["height"],
         id: json["id"],
         img: json["img"],
-        multipliers: json["multipliers"] == null ? null : List<double>.from(json["multipliers"]!.map((x) => x?.toDouble())),
+        multipliers: (json.containsKey("multipliers") ? json["multipliers"] : throw FormatException('Missing required property')) == null ? null : List<double>.from((json.containsKey("multipliers") ? json["multipliers"] : throw FormatException('Missing required property'))!.map((x) => x?.toDouble())),
         name: json["name"],
         nextEvolution: json["next_evolution"] == null ? null : List<Evolution>.from(json["next_evolution"]!.map((x) => Evolution.fromJson(x))),
         num: json["num"],
diff --git a/base/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart
index 2879a3f..1656bb3 100644
--- a/base/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/reddit.json/default/TopLevel.dart
@@ -43,7 +43,7 @@ class TopLevelData {
 
     factory TopLevelData.fromJson(Map<String, dynamic> json) => TopLevelData(
         after: json["after"],
-        before: json["before"],
+        before: (json.containsKey("before") ? json["before"] : throw FormatException('Missing required property')),
         children: List<Child>.from(json["children"].map((x) => Child.fromJson(x))),
         modhash: json["modhash"],
     );
@@ -214,14 +214,14 @@ class ChildData {
     });
 
     factory ChildData.fromJson(Map<String, dynamic> json) => ChildData(
-        approvedAtUtc: json["approved_at_utc"],
-        approvedBy: json["approved_by"],
+        approvedAtUtc: (json.containsKey("approved_at_utc") ? json["approved_at_utc"] : throw FormatException('Missing required property')),
+        approvedBy: (json.containsKey("approved_by") ? json["approved_by"] : throw FormatException('Missing required property')),
         archived: json["archived"],
         author: json["author"],
-        authorFlairCssClass: json["author_flair_css_class"],
-        authorFlairText: json["author_flair_text"],
-        bannedAtUtc: json["banned_at_utc"],
-        bannedBy: json["banned_by"],
+        authorFlairCssClass: (json.containsKey("author_flair_css_class") ? json["author_flair_css_class"] : throw FormatException('Missing required property')),
+        authorFlairText: (json.containsKey("author_flair_text") ? json["author_flair_text"] : throw FormatException('Missing required property')),
+        bannedAtUtc: (json.containsKey("banned_at_utc") ? json["banned_at_utc"] : throw FormatException('Missing required property')),
+        bannedBy: (json.containsKey("banned_by") ? json["banned_by"] : throw FormatException('Missing required property')),
         brandSafe: json["brand_safe"],
         canGild: json["can_gild"],
         canModPost: json["can_mod_post"],
@@ -229,7 +229,7 @@ class ChildData {
         contestMode: json["contest_mode"],
         created: json["created"],
         createdUtc: json["created_utc"],
-        distinguished: json["distinguished"],
+        distinguished: (json.containsKey("distinguished") ? json["distinguished"] : throw FormatException('Missing required property')),
         domain: domainValues.map[json["domain"]]!,
         downs: json["downs"],
         edited: json["edited"],
@@ -239,37 +239,37 @@ class ChildData {
         id: json["id"],
         isSelf: json["is_self"],
         isVideo: json["is_video"],
-        likes: json["likes"],
-        linkFlairCssClass: json["link_flair_css_class"],
-        linkFlairText: json["link_flair_text"],
+        likes: (json.containsKey("likes") ? json["likes"] : throw FormatException('Missing required property')),
+        linkFlairCssClass: (json.containsKey("link_flair_css_class") ? json["link_flair_css_class"] : throw FormatException('Missing required property')),
+        linkFlairText: (json.containsKey("link_flair_text") ? json["link_flair_text"] : throw FormatException('Missing required property')),
         locked: json["locked"],
-        media: json["media"],
+        media: (json.containsKey("media") ? json["media"] : throw FormatException('Missing required property')),
         mediaEmbed: MediaEmbed.fromJson(json["media_embed"]),
         modReports: List<dynamic>.from(json["mod_reports"].map((x) => x)),
         name: json["name"],
         numComments: json["num_comments"],
-        numReports: json["num_reports"],
+        numReports: (json.containsKey("num_reports") ? json["num_reports"] : throw FormatException('Missing required property')),
         over18: json["over_18"],
         parentWhitelistStatus: whitelistStatusValues.map[json["parent_whitelist_status"]]!,
         permalink: json["permalink"],
         postHint: postHintValues.map[json["post_hint"]]!,
         preview: Preview.fromJson(json["preview"]),
         quarantine: json["quarantine"],
-        removalReason: json["removal_reason"],
-        reportReasons: json["report_reasons"],
+        removalReason: (json.containsKey("removal_reason") ? json["removal_reason"] : throw FormatException('Missing required property')),
+        reportReasons: (json.containsKey("report_reasons") ? json["report_reasons"] : throw FormatException('Missing required property')),
         saved: json["saved"],
         score: json["score"],
-        secureMedia: json["secure_media"],
+        secureMedia: (json.containsKey("secure_media") ? json["secure_media"] : throw FormatException('Missing required property')),
         secureMediaEmbed: MediaEmbed.fromJson(json["secure_media_embed"]),
         selftext: json["selftext"],
-        selftextHtml: json["selftext_html"],
+        selftextHtml: (json.containsKey("selftext_html") ? json["selftext_html"] : throw FormatException('Missing required property')),
         spoiler: json["spoiler"],
         stickied: json["stickied"],
         subreddit: subredditValues.map[json["subreddit"]]!,
         subredditId: subredditIdValues.map[json["subreddit_id"]]!,
         subredditNamePrefixed: subredditNamePrefixedValues.map[json["subreddit_name_prefixed"]]!,
         subredditType: subredditTypeValues.map[json["subreddit_type"]]!,
-        suggestedSort: json["suggested_sort"],
+        suggestedSort: (json.containsKey("suggested_sort") ? json["suggested_sort"] : throw FormatException('Missing required property')),
         thumbnail: json["thumbnail"],
         thumbnailHeight: json["thumbnail_height"],
         thumbnailWidth: json["thumbnail_width"],
@@ -277,7 +277,7 @@ class ChildData {
         ups: json["ups"],
         url: json["url"],
         userReports: List<dynamic>.from(json["user_reports"].map((x) => x)),
-        viewCount: json["view_count"],
+        viewCount: (json.containsKey("view_count") ? json["view_count"] : throw FormatException('Missing required property')),
         visited: json["visited"],
         whitelistStatus: whitelistStatusValues.map[json["whitelist_status"]]!,
     );
diff --git a/base/dart/test/inputs/json/samples/spotify-album.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/spotify-album.json/default/TopLevel.dart
index aed84fb..417e75e 100644
--- a/base/dart/test/inputs/json/samples/spotify-album.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/spotify-album.json/default/TopLevel.dart
@@ -223,9 +223,9 @@ class Tracks {
         href: json["href"],
         items: List<Item>.from(json["items"].map((x) => Item.fromJson(x))),
         limit: json["limit"],
-        next: json["next"],
+        next: (json.containsKey("next") ? json["next"] : throw FormatException('Missing required property')),
         offset: json["offset"],
-        previous: json["previous"],
+        previous: (json.containsKey("previous") ? json["previous"] : throw FormatException('Missing required property')),
         total: json["total"],
     );
 
diff --git a/base/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart b/head/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart
index 1513607..2457ce0 100644
--- a/base/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/samples/us-senators.json/default/TopLevel.dart
@@ -102,14 +102,14 @@ class Object {
     });
 
     factory Object.fromJson(Map<String, dynamic> json) => Object(
-        caucus: json["caucus"] == null ? null : partyValues.map[json["caucus"]]!,
+        caucus: (json.containsKey("caucus") ? json["caucus"] : throw FormatException('Missing required property')) == null ? null : partyValues.map[(json.containsKey("caucus") ? json["caucus"] : throw FormatException('Missing required property'))]!,
         congressNumbers: List<int>.from(json["congress_numbers"].map((x) => x)),
         current: json["current"],
         description: json["description"],
-        district: json["district"],
+        district: (json.containsKey("district") ? json["district"] : throw FormatException('Missing required property')),
         enddate: DateTime.parse(json["enddate"]),
         extra: Extra.fromJson(json["extra"]),
-        leadershipTitle: json["leadership_title"],
+        leadershipTitle: (json.containsKey("leadership_title") ? json["leadership_title"] : throw FormatException('Missing required property')),
         party: partyValues.map[json["party"]]!,
         person: Person.fromJson(json["person"]),
         phone: json["phone"],
@@ -251,8 +251,8 @@ class Person {
         osid: json["osid"],
         pvsid: json["pvsid"],
         sortname: json["sortname"],
-        twitterid: json["twitterid"],
-        youtubeid: json["youtubeid"],
+        twitterid: (json.containsKey("twitterid") ? json["twitterid"] : throw FormatException('Missing required property')),
+        youtubeid: (json.containsKey("youtubeid") ? json["youtubeid"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github1.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github1.graphql/default/TopLevel.dart
index f85ca80..dcf95bc 100644
--- a/base/graphql-dart/test/inputs/graphql/github1.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github1.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -55,7 +55,7 @@ class User {
 
     factory User.fromJson(Map<String, dynamic> json) => User(
         login: json["login"],
-        realName: json["realName"],
+        realName: (json.containsKey("realName") ? json["realName"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github2.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github2.graphql/default/TopLevel.dart
index 791712f..7b3b4f7 100644
--- a/base/graphql-dart/test/inputs/graphql/github2.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github2.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -75,7 +75,7 @@ class RepositoryConnection {
 
     factory RepositoryConnection.fromJson(Map<String, dynamic> json) => RepositoryConnection(
         totalCount: json["totalCount"],
-        nodes: json["nodes"] == null ? null : List<Repository?>.from(json["nodes"]!.map((x) => x == null ? null : Repository.fromJson(x))),
+        nodes: (json.containsKey("nodes") ? json["nodes"] : throw FormatException('Missing required property')) == null ? null : List<Repository?>.from((json.containsKey("nodes") ? json["nodes"] : throw FormatException('Missing required property'))!.map((x) => x == null ? null : Repository.fromJson(x))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github3.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github3.graphql/default/TopLevel.dart
index 749aa55..dda51db 100644
--- a/base/graphql-dart/test/inputs/graphql/github3.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github3.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -55,7 +55,7 @@ class User {
 
     factory User.fromJson(Map<String, dynamic> json) => User(
         login: json["login"],
-        repository: json["repository"] == null ? null : Repository.fromJson(json["repository"]),
+        repository: (json.containsKey("repository") ? json["repository"] : throw FormatException('Missing required property')) == null ? null : Repository.fromJson((json.containsKey("repository") ? json["repository"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
@@ -88,7 +88,7 @@ class PullRequestConnection {
     });
 
     factory PullRequestConnection.fromJson(Map<String, dynamic> json) => PullRequestConnection(
-        nodes: json["nodes"] == null ? null : List<PullRequest?>.from(json["nodes"]!.map((x) => x == null ? null : PullRequest.fromJson(x))),
+        nodes: (json.containsKey("nodes") ? json["nodes"] : throw FormatException('Missing required property')) == null ? null : List<PullRequest?>.from((json.containsKey("nodes") ? json["nodes"] : throw FormatException('Missing required property'))!.map((x) => x == null ? null : PullRequest.fromJson(x))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github4.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github4.graphql/default/TopLevel.dart
index 03fc6b8..0ee2014 100644
--- a/base/graphql-dart/test/inputs/graphql/github4.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github4.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -57,8 +57,8 @@ class User {
 
     factory User.fromJson(Map<String, dynamic> json) => User(
         login: json["login"],
-        name: json["name"],
-        repository: json["repository"] == null ? null : Repository.fromJson(json["repository"]),
+        name: (json.containsKey("name") ? json["name"] : throw FormatException('Missing required property')),
+        repository: (json.containsKey("repository") ? json["repository"] : throw FormatException('Missing required property')) == null ? null : Repository.fromJson((json.containsKey("repository") ? json["repository"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
@@ -92,7 +92,7 @@ class PullRequestConnection {
     });
 
     factory PullRequestConnection.fromJson(Map<String, dynamic> json) => PullRequestConnection(
-        nodes: json["nodes"] == null ? null : List<PullRequest?>.from(json["nodes"]!.map((x) => x == null ? null : PullRequest.fromJson(x))),
+        nodes: (json.containsKey("nodes") ? json["nodes"] : throw FormatException('Missing required property')) == null ? null : List<PullRequest?>.from((json.containsKey("nodes") ? json["nodes"] : throw FormatException('Missing required property'))!.map((x) => x == null ? null : PullRequest.fromJson(x))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github5.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github5.graphql/default/TopLevel.dart
index f267fc6..fab1c13 100644
--- a/base/graphql-dart/test/inputs/graphql/github5.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github5.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
diff --git a/base/graphql-dart/test/inputs/graphql/github6.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github6.graphql/default/TopLevel.dart
index e36535b..5b012eb 100644
--- a/base/graphql-dart/test/inputs/graphql/github6.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github6.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -36,7 +36,7 @@ class Data {
     });
 
     factory Data.fromJson(Map<String, dynamic> json) => Data(
-        resource: json["resource"] == null ? null : UniformResourceLocatable.fromJson(json["resource"]),
+        resource: (json.containsKey("resource") ? json["resource"] : throw FormatException('Missing required property')) == null ? null : UniformResourceLocatable.fromJson((json.containsKey("resource") ? json["resource"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github7.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github7.graphql/default/TopLevel.dart
index c82e0d5..cc1acf9 100644
--- a/base/graphql-dart/test/inputs/graphql/github7.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github7.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -76,7 +76,7 @@ class RepositoryConnection {
     });
 
     factory RepositoryConnection.fromJson(Map<String, dynamic> json) => RepositoryConnection(
-        edges: json["edges"] == null ? null : List<RepositoryEdge?>.from(json["edges"]!.map((x) => x == null ? null : RepositoryEdge.fromJson(x))),
+        edges: (json.containsKey("edges") ? json["edges"] : throw FormatException('Missing required property')) == null ? null : List<RepositoryEdge?>.from((json.containsKey("edges") ? json["edges"] : throw FormatException('Missing required property'))!.map((x) => x == null ? null : RepositoryEdge.fromJson(x))),
     );
 
     Map<String, dynamic> toJson() => {
@@ -92,7 +92,7 @@ class RepositoryEdge {
     });
 
     factory RepositoryEdge.fromJson(Map<String, dynamic> json) => RepositoryEdge(
-        node: json["node"] == null ? null : Repository.fromJson(json["node"]),
+        node: (json.containsKey("node") ? json["node"] : throw FormatException('Missing required property')) == null ? null : Repository.fromJson((json.containsKey("node") ? json["node"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github8.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github8.graphql/default/TopLevel.dart
index 65c3344..f9e0ea7 100644
--- a/base/graphql-dart/test/inputs/graphql/github8.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github8.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -36,7 +36,7 @@ class Data {
     });
 
     factory Data.fromJson(Map<String, dynamic> json) => Data(
-        repository: json["repository"] == null ? null : Repository.fromJson(json["repository"]),
+        repository: (json.containsKey("repository") ? json["repository"] : throw FormatException('Missing required property')) == null ? null : Repository.fromJson((json.containsKey("repository") ? json["repository"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
@@ -57,8 +57,8 @@ class Repository {
 
     factory Repository.fromJson(Map<String, dynamic> json) => Repository(
         nameWithOwner: json["nameWithOwner"],
-        n303: json["n303"] == null ? null : IssueOrPullRequest.fromJson(json["n303"]),
-        n307: json["n307"] == null ? null : IssueOrPullRequest.fromJson(json["n307"]),
+        n303: (json.containsKey("n303") ? json["n303"] : throw FormatException('Missing required property')) == null ? null : IssueOrPullRequest.fromJson((json.containsKey("n303") ? json["n303"] : throw FormatException('Missing required property'))),
+        n307: (json.containsKey("n307") ? json["n307"] : throw FormatException('Missing required property')) == null ? null : IssueOrPullRequest.fromJson((json.containsKey("n307") ? json["n307"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/graphql-dart/test/inputs/graphql/github9.graphql/default/TopLevel.dart b/head/graphql-dart/test/inputs/graphql/github9.graphql/default/TopLevel.dart
index 33dd864..bd2f469 100644
--- a/base/graphql-dart/test/inputs/graphql/github9.graphql/default/TopLevel.dart
+++ b/head/graphql-dart/test/inputs/graphql/github9.graphql/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        data: json["data"] == null ? null : Data.fromJson(json["data"]),
+        data: (json.containsKey("data") ? json["data"] : throw FormatException('Missing required property')) == null ? null : Data.fromJson((json.containsKey("data") ? json["data"] : throw FormatException('Missing required property'))),
         errors: json["errors"] == null ? null : List<Error>.from(json["errors"]!.map((x) => Error.fromJson(x))),
     );
 
@@ -36,7 +36,7 @@ class Data {
     });
 
     factory Data.fromJson(Map<String, dynamic> json) => Data(
-        addReaction: json["addReaction"] == null ? null : AddReactionPayload.fromJson(json["addReaction"]),
+        addReaction: (json.containsKey("addReaction") ? json["addReaction"] : throw FormatException('Missing required property')) == null ? null : AddReactionPayload.fromJson((json.containsKey("addReaction") ? json["addReaction"] : throw FormatException('Missing required property'))),
     );
 
     Map<String, dynamic> toJson() => {
@@ -56,7 +56,7 @@ class AddReactionPayload {
     });
 
     factory AddReactionPayload.fromJson(Map<String, dynamic> json) => AddReactionPayload(
-        clientMutationId: json["clientMutationId"],
+        clientMutationId: (json.containsKey("clientMutationId") ? json["clientMutationId"] : throw FormatException('Missing required property')),
         reaction: Reaction.fromJson(json["reaction"]),
         subject: Reactable.fromJson(json["subject"]),
     );
@@ -113,7 +113,7 @@ class Reactable {
 
     factory Reactable.fromJson(Map<String, dynamic> json) => Reactable(
         viewerCanReact: json["viewerCanReact"],
-        reactionGroups: json["reactionGroups"] == null ? null : List<Reaction>.from(json["reactionGroups"]!.map((x) => Reaction.fromJson(x))),
+        reactionGroups: (json.containsKey("reactionGroups") ? json["reactionGroups"] : throw FormatException('Missing required property')) == null ? null : List<Reaction>.from((json.containsKey("reactionGroups") ? json["reactionGroups"] : throw FormatException('Missing required property'))!.map((x) => Reaction.fromJson(x))),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/schema-dart/test/inputs/schema/any.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/any.schema/default/TopLevel.dart
index 223cf33..f4d1d3c 100644
--- a/base/schema-dart/test/inputs/schema/any.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/any.schema/default/TopLevel.dart
@@ -18,7 +18,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        foo: json["foo"],
+        foo: (json.containsKey("foo") ? json["foo"] : throw FormatException('Missing required property')),
         values: Map.from(json["values"]).map((k, v) => MapEntry<String, dynamic>(k, v)),
     );
 
diff --git a/base/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart
index dd09fef..003c4de 100644
--- a/base/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/bool-string.schema/default/TopLevel.dart
@@ -30,7 +30,7 @@ class TopLevel {
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         arrNullable: json["arrNullable"] == null ? null : List<String?>.from(json["arrNullable"]!.map((x) => x)),
         arrOne: json["arrOne"] == null ? null : List<String>.from(json["arrOne"]!.map((x) => x)),
-        nullable: json["nullable"],
+        nullable: (json.containsKey("nullable") ? json["nullable"] : throw FormatException('Missing required property')),
         one: json["one"],
         optional: json["optional"],
         unionWithBool: json["unionWithBool"],
diff --git a/base/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart
index f0d5549..bf7461a 100644
--- a/base/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart
@@ -35,7 +35,7 @@ class Thing {
 
     factory Thing.fromJson(Map<String, dynamic> json) => Thing(
         optional: json["optional"],
-        required: json["required"],
+        required: (json.containsKey("required") ? json["required"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart
index b03cb1c..7655c9a 100644
--- a/base/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/enum-with-null.schema/default/TopLevel.dart
@@ -16,7 +16,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        topLevelEnum: json["enum"] == null ? null : enumValues.map[json["enum"]]!,
+        topLevelEnum: (json.containsKey("enum") ? json["enum"] : throw FormatException('Missing required property')) == null ? null : enumValues.map[(json.containsKey("enum") ? json["enum"] : throw FormatException('Missing required property'))]!,
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/schema-dart/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.dart
index d3d57c0..e511cc1 100644
--- a/base/schema-dart/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/implicit-class-array-union.schema/default/TopLevel.dart
@@ -16,7 +16,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        foo: json["foo"],
+        foo: (json.containsKey("foo") ? json["foo"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart
index 106a7ec..16913d4 100644
--- a/base/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/integer-string.schema/default/TopLevel.dart
@@ -30,7 +30,7 @@ class TopLevel {
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         arrNullable: json["arrNullable"] == null ? null : List<String?>.from(json["arrNullable"]!.map((x) => x)),
         arrOne: json["arrOne"] == null ? null : List<String>.from(json["arrOne"]!.map((x) => x)),
-        nullable: json["nullable"],
+        nullable: (json.containsKey("nullable") ? json["nullable"] : throw FormatException('Missing required property')),
         one: json["one"],
         optional: json["optional"],
         unionWithInt: json["unionWithInt"],
diff --git a/base/schema-dart/test/inputs/schema/required-non-properties.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/required-non-properties.schema/default/TopLevel.dart
index 0875557..6f2de3a 100644
--- a/base/schema-dart/test/inputs/schema/required-non-properties.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/required-non-properties.schema/default/TopLevel.dart
@@ -19,7 +19,7 @@ class TopLevel {
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         foo: json["foo"],
-        bar: json["bar"],
+        bar: (json.containsKey("bar") ? json["bar"] : throw FormatException('Missing required property')),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/schema-dart/test/inputs/schema/strict-optional.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/strict-optional.schema/default/TopLevel.dart
index 269d180..eaafec3 100644
--- a/base/schema-dart/test/inputs/schema/strict-optional.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/strict-optional.schema/default/TopLevel.dart
@@ -16,7 +16,7 @@ class TopLevel {
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
-        foo: json["foo"]?.toDouble(),
+        foo: (json.containsKey("foo") ? json["foo"] : throw FormatException('Missing required property'))?.toDouble(),
     );
 
     Map<String, dynamic> toJson() => {
diff --git a/base/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart
index f019796..7c5533f 100644
--- a/base/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/uuid.schema/default/TopLevel.dart
@@ -28,7 +28,7 @@ class TopLevel {
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
         arrNullable: json["arrNullable"] == null ? null : List<String?>.from(json["arrNullable"]!.map((x) => x)),
         arrOne: json["arrOne"] == null ? null : List<String>.from(json["arrOne"]!.map((x) => x)),
-        nullable: json["nullable"],
+        nullable: (json.containsKey("nullable") ? json["nullable"] : throw FormatException('Missing required property')),
         one: json["one"],
         optional: json["optional"],
         unionWithEnum: json["unionWithEnum"],
