diff --git a/base/kotlin-jackson/test/inputs/json/misc/050b0.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/050b0.json/default/TopLevel.kt
index 6852aaf..3341288 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/050b0.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/050b0.json/default/TopLevel.kt
@@ -61,8 +61,8 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<OtherName>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
-    val supersededBy: String? = null,
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
+    val supersededBy: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val text: List<Text>
@@ -139,7 +139,8 @@ data class OtherName (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val note: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val note: String?
 )
 
 data class Text (
diff --git a/base/kotlin-jackson/test/inputs/json/misc/06bee.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/06bee.json/default/TopLevel.kt
index 710e5f2..54fca82 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/06bee.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/06bee.json/default/TopLevel.kt
@@ -61,7 +61,7 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<Any?>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
     val supersededBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/07c75.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/07c75.json/default/TopLevel.kt
index eda17de..d959f5d 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/07c75.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/07c75.json/default/TopLevel.kt
@@ -45,7 +45,7 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<Any?>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
     val supersededBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/0a91a.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/0a91a.json/default/TopLevel.kt
index aafe2c3..37d35fa 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/0a91a.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/0a91a.json/default/TopLevel.kt
@@ -149,6 +149,7 @@ data class PullRequest (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val additions: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val assignee: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -211,6 +212,7 @@ data class PullRequest (
     @get:JsonProperty("merge_commit_sha", required=true)@field:JsonProperty("merge_commit_sha", required=true)
     val mergeCommitSHA: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mergeable: Any? = null,
 
     @get:JsonProperty("mergeable_state", required=true)@field:JsonProperty("mergeable_state", required=true)
@@ -225,6 +227,7 @@ data class PullRequest (
     @get:JsonProperty("merged_by", required=true)@field:JsonProperty("merged_by", required=true)
     val mergedBy: MergedBy,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val milestone: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -233,6 +236,7 @@ data class PullRequest (
     @get:JsonProperty("patch_url", required=true)@field:JsonProperty("patch_url", required=true)
     val patchURL: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rebaseable: Any? = null,
 
     @get:JsonProperty("requested_reviewers", required=true)@field:JsonProperty("requested_reviewers", required=true)
@@ -326,6 +330,7 @@ data class BaseRepo (
     @get:JsonProperty("deployments_url", required=true)@field:JsonProperty("deployments_url", required=true)
     val deploymentsURL: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val description: Any? = null,
 
     @get:JsonProperty("downloads_url", required=true)@field:JsonProperty("downloads_url", required=true)
@@ -376,6 +381,7 @@ data class BaseRepo (
     @get:JsonProperty("has_wiki", required=true)@field:JsonProperty("has_wiki", required=true)
     val hasWiki: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val homepage: Any? = null,
 
     @get:JsonProperty("hooks_url", required=true)@field:JsonProperty("hooks_url", required=true)
@@ -414,7 +420,7 @@ data class BaseRepo (
     @get:JsonProperty("milestones_url", required=true)@field:JsonProperty("milestones_url", required=true)
     val milestonesURL: String,
 
-    @get:JsonProperty("mirror_url")@field:JsonProperty("mirror_url")
+    @get:JsonProperty("mirror_url", required=true)@field:JsonProperty("mirror_url", required=true)
     val mirrorURL: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/0b91a.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/0b91a.json/default/TopLevel.kt
index cadc900..0fcecc7 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/0b91a.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/0b91a.json/default/TopLevel.kt
@@ -85,7 +85,10 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val image: List<Any?>,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val number: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val teaser: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/0e0c2.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/0e0c2.json/default/TopLevel.kt
index e2cf2ab..8e11be7 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/0e0c2.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/0e0c2.json/default/TopLevel.kt
@@ -43,6 +43,7 @@ data class TopLevel (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val next: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val previous: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -86,7 +87,8 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val stars: Long,
 
-    val tags: List<Any?>? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val tags: List<Any?>?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val title: String,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/10be4.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/10be4.json/default/TopLevel.kt
index 3e277e8..a1040a8 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/10be4.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/10be4.json/default/TopLevel.kt
@@ -61,8 +61,8 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<OtherName>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
-    val supersededBy: String? = null,
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
+    val supersededBy: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val text: List<Text>
@@ -157,7 +157,8 @@ data class OtherName (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val note: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val note: String?
 )
 
 data class Text (
diff --git a/base/kotlin-jackson/test/inputs/json/misc/1b409.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/1b409.json/default/TopLevel.kt
index 994c7b3..e6d6a3b 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/1b409.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/1b409.json/default/TopLevel.kt
@@ -66,6 +66,7 @@ data class Meta (
 )
 
 data class Object (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val caucus: Any? = null,
 
     @get:JsonProperty("congress_numbers", required=true)@field:JsonProperty("congress_numbers", required=true)
@@ -89,8 +90,8 @@ data class Object (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val id: Long,
 
-    @get:JsonProperty("leadership_title")@field:JsonProperty("leadership_title")
-    val leadershipTitle: String? = null,
+    @get:JsonProperty("leadership_title", required=true)@field:JsonProperty("leadership_title", required=true)
+    val leadershipTitle: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val party: Party,
@@ -107,10 +108,10 @@ data class Object (
     @get:JsonProperty("role_type_label", required=true)@field:JsonProperty("role_type_label", required=true)
     val roleTypeLabel: RoleTypeLabel,
 
-    @get:JsonProperty("senator_class")@field:JsonProperty("senator_class")
+    @get:JsonProperty("senator_class", required=true)@field:JsonProperty("senator_class", required=true)
     val senatorClass: Any? = null,
 
-    @get:JsonProperty("senator_rank")@field:JsonProperty("senator_rank")
+    @get:JsonProperty("senator_rank", required=true)@field:JsonProperty("senator_rank", required=true)
     val senatorRank: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -201,13 +202,17 @@ data class Person (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val osid: String,
 
-    val pvsid: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val pvsid: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sortname: String,
 
-    val twitterid: String? = null,
-    val youtubeid: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val twitterid: String?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val youtubeid: String?
 )
 
 enum class Gender(val value: String) {
diff --git a/base/kotlin-jackson/test/inputs/json/misc/27332.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/27332.json/default/TopLevel.kt
index ec52670..ca7aae7 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/27332.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/27332.json/default/TopLevel.kt
@@ -55,6 +55,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -73,10 +74,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -85,16 +86,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
-    val authorFlairCSSClass: String? = null,
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
+    val authorFlairCSSClass: String?,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
-    val authorFlairText: String? = null,
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
+    val authorFlairText: String?,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -118,7 +119,8 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
-    val distinguished: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val distinguished: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val domain: Domain,
@@ -147,18 +149,20 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
-    val linkFlairCSSClass: String? = null,
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
+    val linkFlairCSSClass: String?,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
-    val linkFlairText: String? = null,
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
+    val linkFlairText: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
-    val media: Media? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val media: Media?,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
     val mediaEmbed: MediaEmbed,
@@ -172,7 +176,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -189,10 +193,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -201,8 +205,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
-    val secureMedia: Media? = null,
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
+    val secureMedia: Media?,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
     val secureMediaEmbed: MediaEmbed,
@@ -210,8 +214,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
-    val selftextHTML: String? = null,
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
+    val selftextHTML: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val spoiler: Boolean,
@@ -231,17 +235,17 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
     val suggestedSort: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thumbnail: String,
 
-    @get:JsonProperty("thumbnail_height")@field:JsonProperty("thumbnail_height")
-    val thumbnailHeight: Long? = null,
+    @get:JsonProperty("thumbnail_height", required=true)@field:JsonProperty("thumbnail_height", required=true)
+    val thumbnailHeight: Long?,
 
-    @get:JsonProperty("thumbnail_width")@field:JsonProperty("thumbnail_width")
-    val thumbnailWidth: Long? = null,
+    @get:JsonProperty("thumbnail_width", required=true)@field:JsonProperty("thumbnail_width", required=true)
+    val thumbnailWidth: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val title: String,
@@ -255,7 +259,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/29f47.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/29f47.json/default/TopLevel.kt
index 3cd6659..88cb60f 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/29f47.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/29f47.json/default/TopLevel.kt
@@ -57,6 +57,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -75,10 +76,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -87,16 +88,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
     val authorFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
     val authorFlairText: Any? = null,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -150,17 +151,19 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
     val linkFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
     val linkFlairText: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val media: Any? = null,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
@@ -175,7 +178,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -192,10 +195,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -204,7 +207,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
     val secureMedia: Any? = null,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
@@ -213,8 +216,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
-    val selftextHTML: String? = null,
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
+    val selftextHTML: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val spoiler: Boolean,
@@ -234,17 +237,17 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
-    val suggestedSort: String? = null,
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
+    val suggestedSort: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thumbnail: String,
 
-    @get:JsonProperty("thumbnail_height")@field:JsonProperty("thumbnail_height")
-    val thumbnailHeight: Long? = null,
+    @get:JsonProperty("thumbnail_height", required=true)@field:JsonProperty("thumbnail_height", required=true)
+    val thumbnailHeight: Long?,
 
-    @get:JsonProperty("thumbnail_width")@field:JsonProperty("thumbnail_width")
-    val thumbnailWidth: Long? = null,
+    @get:JsonProperty("thumbnail_width", required=true)@field:JsonProperty("thumbnail_width", required=true)
+    val thumbnailWidth: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val title: String,
@@ -258,7 +261,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/2d4e2.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/2d4e2.json/default/TopLevel.kt
index 3ef2e31..e0be240 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/2d4e2.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/2d4e2.json/default/TopLevel.kt
@@ -70,7 +70,8 @@ data class Meta (
 )
 
 data class Object (
-    val caucus: Party? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val caucus: Party?,
 
     @get:JsonProperty("congress_numbers", required=true)@field:JsonProperty("congress_numbers", required=true)
     val congressNumbers: List<Long>,
@@ -81,6 +82,7 @@ data class Object (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val description: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val district: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -92,8 +94,8 @@ data class Object (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val id: Long,
 
-    @get:JsonProperty("leadership_title")@field:JsonProperty("leadership_title")
-    val leadershipTitle: String? = null,
+    @get:JsonProperty("leadership_title", required=true)@field:JsonProperty("leadership_title", required=true)
+    val leadershipTitle: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val party: Party,
@@ -218,8 +220,11 @@ data class Person (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sortname: String,
 
-    val twitterid: String? = null,
-    val youtubeid: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val twitterid: String?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val youtubeid: String?
 )
 
 enum class Gender(val value: String) {
diff --git a/base/kotlin-jackson/test/inputs/json/misc/31189.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/31189.json/default/TopLevel.kt
index fe5a6d2..13389e8 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/31189.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/31189.json/default/TopLevel.kt
@@ -41,6 +41,7 @@ data class TopLevel (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rates: List<Rate>,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val version: Any? = null
 ) {
     fun toJson() = mapper.writeValueAsString(this)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/32431.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/32431.json/default/TopLevel.kt
index d81f555..8fbe731 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/32431.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/32431.json/default/TopLevel.kt
@@ -89,7 +89,10 @@ enum class GeometryType(val value: String) {
 }
 
 data class Properties (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val alert: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cdi: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -98,9 +101,14 @@ data class Properties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val detail: String,
 
-    val dmin: Double? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val dmin: Double?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val felt: Any? = null,
-    val gap: Long? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val gap: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ids: String,
@@ -111,12 +119,14 @@ data class Properties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val magType: MagType,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mmi: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val net: String,
 
-    val nst: Long? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val nst: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val place: String,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/32d5c.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/32d5c.json/default/TopLevel.kt
index bd205bc..1b033f7 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/32d5c.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/32d5c.json/default/TopLevel.kt
@@ -42,8 +42,8 @@ class TopLevel(elements: Collection<TopLevelElement> = emptyList()) : ArrayList<
 }
 
 data class TopLevelElement (
-    @get:JsonProperty("BirthDate")@field:JsonProperty("BirthDate")
-    val birthDate: OffsetDateTime? = null,
+    @get:JsonProperty("BirthDate", required=true)@field:JsonProperty("BirthDate", required=true)
+    val birthDate: OffsetDateTime?,
 
     @get:JsonProperty("BirthDateIsProtected", required=true)@field:JsonProperty("BirthDateIsProtected", required=true)
     val birthDateIsProtected: Boolean,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/337ed.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/337ed.json/default/TopLevel.kt
index 4d62ce0..299b826 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/337ed.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/337ed.json/default/TopLevel.kt
@@ -68,14 +68,14 @@ data class TopLevel (
 typealias Facets = JsonNode
 
 data class Result (
-    @get:JsonProperty("cost_absolute")@field:JsonProperty("cost_absolute")
-    val costAbsolute: Long? = null,
+    @get:JsonProperty("cost_absolute", required=true)@field:JsonProperty("cost_absolute", required=true)
+    val costAbsolute: Long?,
 
-    @get:JsonProperty("cost_max")@field:JsonProperty("cost_max")
-    val costMax: Long? = null,
+    @get:JsonProperty("cost_max", required=true)@field:JsonProperty("cost_max", required=true)
+    val costMax: Long?,
 
-    @get:JsonProperty("cost_min")@field:JsonProperty("cost_min")
-    val costMin: Long? = null,
+    @get:JsonProperty("cost_min", required=true)@field:JsonProperty("cost_min", required=true)
+    val costMin: Long?,
 
     @get:JsonProperty("created_at", required=true)@field:JsonProperty("created_at", required=true)
     val createdAt: String,
@@ -83,10 +83,10 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val customIncomes: List<CustomIncome>,
 
-    @get:JsonProperty("direct_rep_costs_max")@field:JsonProperty("direct_rep_costs_max")
+    @get:JsonProperty("direct_rep_costs_max", required=true)@field:JsonProperty("direct_rep_costs_max", required=true)
     val directRepCostsMax: Any? = null,
 
-    @get:JsonProperty("direct_rep_costs_min")@field:JsonProperty("direct_rep_costs_min")
+    @get:JsonProperty("direct_rep_costs_min", required=true)@field:JsonProperty("direct_rep_costs_min", required=true)
     val directRepCostsMin: Any? = null,
 
     @get:JsonProperty("end_date", required=true)@field:JsonProperty("end_date", required=true)
@@ -95,44 +95,44 @@ data class Result (
     @get:JsonProperty("eur_sources_grants", required=true)@field:JsonProperty("eur_sources_grants", required=true)
     val eurSourcesGrants: Long,
 
-    @get:JsonProperty("eur_sources_grants_src")@field:JsonProperty("eur_sources_grants_src")
-    val eurSourcesGrantsSrc: String? = null,
+    @get:JsonProperty("eur_sources_grants_src", required=true)@field:JsonProperty("eur_sources_grants_src", required=true)
+    val eurSourcesGrantsSrc: String?,
 
     @get:JsonProperty("eur_sources_procurement", required=true)@field:JsonProperty("eur_sources_procurement", required=true)
     val eurSourcesProcurement: Long,
 
-    @get:JsonProperty("eur_sources_procurement_src")@field:JsonProperty("eur_sources_procurement_src")
-    val eurSourcesProcurementSrc: String? = null,
+    @get:JsonProperty("eur_sources_procurement_src", required=true)@field:JsonProperty("eur_sources_procurement_src", required=true)
+    val eurSourcesProcurementSrc: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val id: String,
 
-    @get:JsonProperty("new_organisation")@field:JsonProperty("new_organisation")
+    @get:JsonProperty("new_organisation", required=true)@field:JsonProperty("new_organisation", required=true)
     val newOrganisation: Any? = null,
 
-    @get:JsonProperty("no_clients")@field:JsonProperty("no_clients")
-    val noClients: String? = null,
+    @get:JsonProperty("no_clients", required=true)@field:JsonProperty("no_clients", required=true)
+    val noClients: String?,
 
-    @get:JsonProperty("other_financial_information")@field:JsonProperty("other_financial_information")
-    val otherFinancialInformation: String? = null,
+    @get:JsonProperty("other_financial_information", required=true)@field:JsonProperty("other_financial_information", required=true)
+    val otherFinancialInformation: String?,
 
-    @get:JsonProperty("other_sources_contributions")@field:JsonProperty("other_sources_contributions")
-    val otherSourcesContributions: Long? = null,
+    @get:JsonProperty("other_sources_contributions", required=true)@field:JsonProperty("other_sources_contributions", required=true)
+    val otherSourcesContributions: Long?,
 
-    @get:JsonProperty("other_sources_donation")@field:JsonProperty("other_sources_donation")
-    val otherSourcesDonation: Long? = null,
+    @get:JsonProperty("other_sources_donation", required=true)@field:JsonProperty("other_sources_donation", required=true)
+    val otherSourcesDonation: Long?,
 
-    @get:JsonProperty("other_sources_total")@field:JsonProperty("other_sources_total")
-    val otherSourcesTotal: Long? = null,
+    @get:JsonProperty("other_sources_total", required=true)@field:JsonProperty("other_sources_total", required=true)
+    val otherSourcesTotal: Long?,
 
-    @get:JsonProperty("public_financing_infranational")@field:JsonProperty("public_financing_infranational")
-    val publicFinancingInfranational: Long? = null,
+    @get:JsonProperty("public_financing_infranational", required=true)@field:JsonProperty("public_financing_infranational", required=true)
+    val publicFinancingInfranational: Long?,
 
-    @get:JsonProperty("public_financing_national")@field:JsonProperty("public_financing_national")
-    val publicFinancingNational: Long? = null,
+    @get:JsonProperty("public_financing_national", required=true)@field:JsonProperty("public_financing_national", required=true)
+    val publicFinancingNational: Long?,
 
-    @get:JsonProperty("public_financing_total")@field:JsonProperty("public_financing_total")
-    val publicFinancingTotal: Long? = null,
+    @get:JsonProperty("public_financing_total", required=true)@field:JsonProperty("public_financing_total", required=true)
+    val publicFinancingTotal: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val representative: String,
@@ -143,17 +143,17 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val status: Status,
 
-    @get:JsonProperty("total_budget")@field:JsonProperty("total_budget")
-    val totalBudget: Long? = null,
+    @get:JsonProperty("total_budget", required=true)@field:JsonProperty("total_budget", required=true)
+    val totalBudget: Long?,
 
-    @get:JsonProperty("turnover_absolute")@field:JsonProperty("turnover_absolute")
-    val turnoverAbsolute: Long? = null,
+    @get:JsonProperty("turnover_absolute", required=true)@field:JsonProperty("turnover_absolute", required=true)
+    val turnoverAbsolute: Long?,
 
-    @get:JsonProperty("turnover_max")@field:JsonProperty("turnover_max")
-    val turnoverMax: Long? = null,
+    @get:JsonProperty("turnover_max", required=true)@field:JsonProperty("turnover_max", required=true)
+    val turnoverMax: Long?,
 
-    @get:JsonProperty("turnover_min")@field:JsonProperty("turnover_min")
-    val turnoverMin: Long? = null,
+    @get:JsonProperty("turnover_min", required=true)@field:JsonProperty("turnover_min", required=true)
+    val turnoverMin: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val type: ResultType,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/34702.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/34702.json/default/TopLevel.kt
index da250a5..66fcbc2 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/34702.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/34702.json/default/TopLevel.kt
@@ -123,8 +123,8 @@ data class FeatureProperties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val fax: Double,
 
-    @get:JsonProperty("fire_ban_r")@field:JsonProperty("fire_ban_r")
-    val fireBanR: FireBanR? = null,
+    @get:JsonProperty("fire_ban_r", required=true)@field:JsonProperty("fire_ban_r", required=true)
+    val fireBanR: FireBanR?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val latitude: Double,
@@ -135,7 +135,8 @@ data class FeatureProperties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val longitude: Double,
 
-    val no: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val no: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val phone: Double,
@@ -158,7 +159,8 @@ data class FeatureProperties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val suburb: String,
 
-    val type: PropertiesType? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val type: PropertiesType?
 )
 
 enum class FireBanR(val value: String) {
diff --git a/base/kotlin-jackson/test/inputs/json/misc/4d6fb.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/4d6fb.json/default/TopLevel.kt
index 1dd921a..ab3a345 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/4d6fb.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/4d6fb.json/default/TopLevel.kt
@@ -54,6 +54,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -72,10 +73,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -84,16 +85,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
     val authorFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
     val authorFlairText: Any? = null,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -117,6 +118,7 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val distinguished: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -146,18 +148,20 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
     val linkFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
     val linkFlairText: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
-    val media: Media? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val media: Media?,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
     val mediaEmbed: MediaEmbed,
@@ -171,7 +175,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -188,10 +192,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -200,8 +204,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
-    val secureMedia: Media? = null,
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
+    val secureMedia: Media?,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
     val secureMediaEmbed: MediaEmbed,
@@ -209,7 +213,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
     val selftextHTML: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -230,17 +234,17 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
     val suggestedSort: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thumbnail: String,
 
-    @get:JsonProperty("thumbnail_height")@field:JsonProperty("thumbnail_height")
-    val thumbnailHeight: Long? = null,
+    @get:JsonProperty("thumbnail_height", required=true)@field:JsonProperty("thumbnail_height", required=true)
+    val thumbnailHeight: Long?,
 
-    @get:JsonProperty("thumbnail_width")@field:JsonProperty("thumbnail_width")
-    val thumbnailWidth: Long? = null,
+    @get:JsonProperty("thumbnail_width", required=true)@field:JsonProperty("thumbnail_width", required=true)
+    val thumbnailWidth: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val title: String,
@@ -254,7 +258,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/570ec.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/570ec.json/default/TopLevel.kt
index 38c4ca5..7e6e4ae 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/570ec.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/570ec.json/default/TopLevel.kt
@@ -57,7 +57,7 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<OtherName>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
     val supersededBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -99,7 +99,8 @@ data class OtherName (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val note: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val note: String?
 )
 
 data class Text (
diff --git a/base/kotlin-jackson/test/inputs/json/misc/66121.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/66121.json/default/TopLevel.kt
index 7f009c0..dc57e62 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/66121.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/66121.json/default/TopLevel.kt
@@ -61,8 +61,8 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<Any?>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
-    val supersededBy: String? = null,
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
+    val supersededBy: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val text: List<Text>
diff --git a/base/kotlin-jackson/test/inputs/json/misc/6c155.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/6c155.json/default/TopLevel.kt
index 22faf92..99a7552 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/6c155.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/6c155.json/default/TopLevel.kt
@@ -88,6 +88,7 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val location: Location,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val teaser: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -139,7 +140,7 @@ data class Location (
     @get:JsonProperty("postal_code", required=true)@field:JsonProperty("postal_code", required=true)
     val postalCode: String,
 
-    @get:JsonProperty("sub_premise")@field:JsonProperty("sub_premise")
+    @get:JsonProperty("sub_premise", required=true)@field:JsonProperty("sub_premise", required=true)
     val subPremise: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/6de06.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/6de06.json/default/TopLevel.kt
index 1f4b788..a32a951 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/6de06.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/6de06.json/default/TopLevel.kt
@@ -51,6 +51,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -69,10 +70,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -81,16 +82,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
-    val authorFlairCSSClass: String? = null,
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
+    val authorFlairCSSClass: String?,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
-    val authorFlairText: String? = null,
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
+    val authorFlairText: String?,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -114,6 +115,7 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val distinguished: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -143,18 +145,20 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
-    val linkFlairCSSClass: String? = null,
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
+    val linkFlairCSSClass: String?,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
-    val linkFlairText: String? = null,
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
+    val linkFlairText: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
-    val media: Media? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val media: Media?,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
     val mediaEmbed: MediaEmbed,
@@ -168,7 +172,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -185,10 +189,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -197,8 +201,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
-    val secureMedia: Media? = null,
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
+    val secureMedia: Media?,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
     val secureMediaEmbed: MediaEmbed,
@@ -206,8 +210,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
-    val selftextHTML: String? = null,
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
+    val selftextHTML: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val spoiler: Boolean,
@@ -227,17 +231,17 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
-    val suggestedSort: String? = null,
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
+    val suggestedSort: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thumbnail: String,
 
-    @get:JsonProperty("thumbnail_height")@field:JsonProperty("thumbnail_height")
-    val thumbnailHeight: Long? = null,
+    @get:JsonProperty("thumbnail_height", required=true)@field:JsonProperty("thumbnail_height", required=true)
+    val thumbnailHeight: Long?,
 
-    @get:JsonProperty("thumbnail_width")@field:JsonProperty("thumbnail_width")
-    val thumbnailWidth: Long? = null,
+    @get:JsonProperty("thumbnail_width", required=true)@field:JsonProperty("thumbnail_width", required=true)
+    val thumbnailWidth: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val title: String,
@@ -251,7 +255,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/734ad.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/734ad.json/default/TopLevel.kt
index 19b867e..7c0be5d 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/734ad.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/734ad.json/default/TopLevel.kt
@@ -63,7 +63,8 @@ data class TopLevel (
 typealias Facets = JsonNode
 
 data class Result (
-    val acronym: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val acronym: String?,
 
     @get:JsonProperty("activity_consult_committees", required=true)@field:JsonProperty("activity_consult_committees", required=true)
     val activityConsultCommittees: String,
@@ -83,8 +84,8 @@ data class Result (
     @get:JsonProperty("activity_inter_groups", required=true)@field:JsonProperty("activity_inter_groups", required=true)
     val activityInterGroups: String,
 
-    @get:JsonProperty("activity_other")@field:JsonProperty("activity_other")
-    val activityOther: String? = null,
+    @get:JsonProperty("activity_other", required=true)@field:JsonProperty("activity_other", required=true)
+    val activityOther: String?,
 
     @get:JsonProperty("activity_relevant_comm", required=true)@field:JsonProperty("activity_relevant_comm", required=true)
     val activityRelevantComm: String,
@@ -134,20 +135,20 @@ data class Result (
     @get:JsonProperty("head_office_country", required=true)@field:JsonProperty("head_office_country", required=true)
     val headOfficeCountry: String,
 
-    @get:JsonProperty("head_office_lat")@field:JsonProperty("head_office_lat")
-    val headOfficeLat: Double? = null,
+    @get:JsonProperty("head_office_lat", required=true)@field:JsonProperty("head_office_lat", required=true)
+    val headOfficeLat: Double?,
 
-    @get:JsonProperty("head_office_lon")@field:JsonProperty("head_office_lon")
-    val headOfficeLon: Double? = null,
+    @get:JsonProperty("head_office_lon", required=true)@field:JsonProperty("head_office_lon", required=true)
+    val headOfficeLon: Double?,
 
     @get:JsonProperty("head_office_phone", required=true)@field:JsonProperty("head_office_phone", required=true)
     val headOfficePhone: String,
 
-    @get:JsonProperty("head_office_post_code")@field:JsonProperty("head_office_post_code")
-    val headOfficePostCode: String? = null,
+    @get:JsonProperty("head_office_post_code", required=true)@field:JsonProperty("head_office_post_code", required=true)
+    val headOfficePostCode: String?,
 
-    @get:JsonProperty("head_office_postbox")@field:JsonProperty("head_office_postbox")
-    val headOfficePostbox: String? = null,
+    @get:JsonProperty("head_office_postbox", required=true)@field:JsonProperty("head_office_postbox", required=true)
+    val headOfficePostbox: String?,
 
     @get:JsonProperty("head_office_street", required=true)@field:JsonProperty("head_office_street", required=true)
     val headOfficeStreet: String,
@@ -182,17 +183,17 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val members: Long,
 
-    @get:JsonProperty("members_100")@field:JsonProperty("members_100")
-    val members100: Long? = null,
+    @get:JsonProperty("members_100", required=true)@field:JsonProperty("members_100", required=true)
+    val members100: Long?,
 
-    @get:JsonProperty("members_25")@field:JsonProperty("members_25")
-    val members25: Long? = null,
+    @get:JsonProperty("members_25", required=true)@field:JsonProperty("members_25", required=true)
+    val members25: Long?,
 
-    @get:JsonProperty("members_50")@field:JsonProperty("members_50")
-    val members50: Long? = null,
+    @get:JsonProperty("members_50", required=true)@field:JsonProperty("members_50", required=true)
+    val members50: Long?,
 
-    @get:JsonProperty("members_75")@field:JsonProperty("members_75")
-    val members75: Long? = null,
+    @get:JsonProperty("members_75", required=true)@field:JsonProperty("members_75", required=true)
+    val members75: Long?,
 
     @get:JsonProperty("members_fte", required=true)@field:JsonProperty("members_fte", required=true)
     val membersFte: Double,
@@ -200,16 +201,17 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    @get:JsonProperty("native_name")@field:JsonProperty("native_name")
+    @get:JsonProperty("native_name", required=true)@field:JsonProperty("native_name", required=true)
     val nativeName: Any? = null,
 
-    val networking: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val networking: String?,
 
-    @get:JsonProperty("number_of_natural_persons")@field:JsonProperty("number_of_natural_persons")
-    val numberOfNaturalPersons: Long? = null,
+    @get:JsonProperty("number_of_natural_persons", required=true)@field:JsonProperty("number_of_natural_persons", required=true)
+    val numberOfNaturalPersons: Long?,
 
-    @get:JsonProperty("other_code_of_conduct")@field:JsonProperty("other_code_of_conduct")
-    val otherCodeOfConduct: String? = null,
+    @get:JsonProperty("other_code_of_conduct", required=true)@field:JsonProperty("other_code_of_conduct", required=true)
+    val otherCodeOfConduct: String?,
 
     @get:JsonProperty("registration_date", required=true)@field:JsonProperty("registration_date", required=true)
     val registrationDate: String,
@@ -232,8 +234,8 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uri: String,
 
-    @get:JsonProperty("web_site_url")@field:JsonProperty("web_site_url")
-    val webSiteURL: String? = null
+    @get:JsonProperty("web_site_url", required=true)@field:JsonProperty("web_site_url", required=true)
+    val webSiteURL: String?
 )
 
 enum class Status(val value: String) {
diff --git a/base/kotlin-jackson/test/inputs/json/misc/7eb30.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/7eb30.json/default/TopLevel.kt
index 2be0c13..02712f1 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/7eb30.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/7eb30.json/default/TopLevel.kt
@@ -42,6 +42,7 @@ data class TopLevel (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val next: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val previous: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/7f568.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/7f568.json/default/TopLevel.kt
index 8ec73da..79dff69 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/7f568.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/7f568.json/default/TopLevel.kt
@@ -56,7 +56,8 @@ data class TopLevelElement (
     @get:JsonProperty("created_at", required=true)@field:JsonProperty("created_at", required=true)
     val createdAt: OffsetDateTime,
 
-    val description: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val description: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val files: Map<String, File>,
@@ -88,6 +89,7 @@ data class TopLevelElement (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val url: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val user: Any? = null
 )
 
@@ -95,7 +97,8 @@ data class File (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val filename: String,
 
-    val language: Language? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val language: Language?,
 
     @get:JsonProperty("raw_url", required=true)@field:JsonProperty("raw_url", required=true)
     val rawURL: String,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/80aff.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/80aff.json/default/TopLevel.kt
index e0ba461..4dac177 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/80aff.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/80aff.json/default/TopLevel.kt
@@ -74,7 +74,8 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val parent: Long? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val parent: Long?,
 
     @get:JsonProperty("updated_at", required=true)@field:JsonProperty("updated_at", required=true)
     val updatedAt: String,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/8592b.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/8592b.json/default/TopLevel.kt
index 5c0a75b..db85802 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/8592b.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/8592b.json/default/TopLevel.kt
@@ -55,6 +55,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -73,10 +74,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -85,16 +86,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
-    val authorFlairCSSClass: String? = null,
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
+    val authorFlairCSSClass: String?,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
-    val authorFlairText: String? = null,
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
+    val authorFlairText: String?,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -118,6 +119,7 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val distinguished: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -147,6 +149,7 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
     @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
@@ -158,6 +161,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val media: Any? = null,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
@@ -172,7 +176,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -189,10 +193,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -201,7 +205,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
     val secureMedia: Any? = null,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
@@ -210,8 +214,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
-    val selftextHTML: String? = null,
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
+    val selftextHTML: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val spoiler: Boolean,
@@ -237,11 +241,11 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thumbnail: String,
 
-    @get:JsonProperty("thumbnail_height")@field:JsonProperty("thumbnail_height")
-    val thumbnailHeight: Long? = null,
+    @get:JsonProperty("thumbnail_height", required=true)@field:JsonProperty("thumbnail_height", required=true)
+    val thumbnailHeight: Long?,
 
-    @get:JsonProperty("thumbnail_width")@field:JsonProperty("thumbnail_width")
-    val thumbnailWidth: Long? = null,
+    @get:JsonProperty("thumbnail_width", required=true)@field:JsonProperty("thumbnail_width", required=true)
+    val thumbnailWidth: Long?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val title: String,
@@ -255,7 +259,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/996bd.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/996bd.json/default/TopLevel.kt
index 4a60cbe..19302c3 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/996bd.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/996bd.json/default/TopLevel.kt
@@ -60,8 +60,8 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<Any?>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
-    val supersededBy: String? = null,
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
+    val supersededBy: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val text: List<Text>
diff --git a/base/kotlin-jackson/test/inputs/json/misc/9a503.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/9a503.json/default/TopLevel.kt
index 5349669..8fa6d27 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/9a503.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/9a503.json/default/TopLevel.kt
@@ -57,7 +57,7 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<Any?>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
     val supersededBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/9ac3b.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/9ac3b.json/default/TopLevel.kt
index cbd4d59..ed9ef73 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/9ac3b.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/9ac3b.json/default/TopLevel.kt
@@ -82,12 +82,14 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val position: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val position: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val status: Status,
 
-    val title: Title? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val title: Title?,
 
     @get:JsonProperty("updated_at", required=true)@field:JsonProperty("updated_at", required=true)
     val updatedAt: String,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/9eed5.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/9eed5.json/default/TopLevel.kt
index 783d969..9163d4e 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/9eed5.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/9eed5.json/default/TopLevel.kt
@@ -57,7 +57,7 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<Any?>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
     val supersededBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/ad8be.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/ad8be.json/default/TopLevel.kt
index 3e277e8..a1040a8 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/ad8be.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/ad8be.json/default/TopLevel.kt
@@ -61,8 +61,8 @@ data class TopLevelElement (
     @get:JsonProperty("other_names", required=true)@field:JsonProperty("other_names", required=true)
     val otherNames: List<OtherName>,
 
-    @get:JsonProperty("superseded_by")@field:JsonProperty("superseded_by")
-    val supersededBy: String? = null,
+    @get:JsonProperty("superseded_by", required=true)@field:JsonProperty("superseded_by", required=true)
+    val supersededBy: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val text: List<Text>
@@ -157,7 +157,8 @@ data class OtherName (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val note: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val note: String?
 )
 
 data class Text (
diff --git a/base/kotlin-jackson/test/inputs/json/misc/ae7f0.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/ae7f0.json/default/TopLevel.kt
index e9ee035..f22f5c7 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/ae7f0.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/ae7f0.json/default/TopLevel.kt
@@ -54,6 +54,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -72,10 +73,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -84,16 +85,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
     val authorFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
     val authorFlairText: Any? = null,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -117,6 +118,7 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val distinguished: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -146,17 +148,19 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
-    val linkFlairCSSClass: String? = null,
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
+    val linkFlairCSSClass: String?,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
-    val linkFlairText: String? = null,
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
+    val linkFlairText: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val media: Any? = null,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
@@ -171,7 +175,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -183,10 +187,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -195,7 +199,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
     val secureMedia: Any? = null,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
@@ -204,7 +208,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
     val selftextHTML: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -225,7 +229,7 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
     val suggestedSort: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -243,7 +247,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/af2d1.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/af2d1.json/default/TopLevel.kt
index 42c5647..9eacd6b 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/af2d1.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/af2d1.json/default/TopLevel.kt
@@ -121,8 +121,8 @@ enum class GeometryName(val value: String) {
 }
 
 data class FeatureProperties (
-    @get:JsonProperty("add_improv")@field:JsonProperty("add_improv")
-    val addImprov: AddImprov? = null,
+    @get:JsonProperty("add_improv", required=true)@field:JsonProperty("add_improv", required=true)
+    val addImprov: AddImprov?,
 
     @get:JsonProperty("area_", required=true)@field:JsonProperty("area_", required=true)
     val area: Double,
@@ -130,32 +130,38 @@ data class FeatureProperties (
     @get:JsonProperty("asset_numb", required=true)@field:JsonProperty("asset_numb", required=true)
     val assetNumb: String,
 
-    val comments: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val comments: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val condition: Long,
 
-    val constructi: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val constructi: String?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val createdate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val createuser: Any? = null,
 
-    @get:JsonProperty("disposal_d")@field:JsonProperty("disposal_d")
+    @get:JsonProperty("disposal_d", required=true)@field:JsonProperty("disposal_d", required=true)
     val disposalD: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val documents: String,
 
-    @get:JsonProperty("drawing_nu")@field:JsonProperty("drawing_nu")
-    val drawingNu: String? = null,
+    @get:JsonProperty("drawing_nu", required=true)@field:JsonProperty("drawing_nu", required=true)
+    val drawingNu: String?,
 
-    @get:JsonProperty("file_numbe")@field:JsonProperty("file_numbe")
-    val fileNumbe: String? = null,
+    @get:JsonProperty("file_numbe", required=true)@field:JsonProperty("file_numbe", required=true)
+    val fileNumbe: String?,
 
-    @get:JsonProperty("folder_num")@field:JsonProperty("folder_num")
-    val folderNum: String? = null,
+    @get:JsonProperty("folder_num", required=true)@field:JsonProperty("folder_num", required=true)
+    val folderNum: String?,
 
-    @get:JsonProperty("funding_ba")@field:JsonProperty("funding_ba")
-    val fundingBa: FundingBa? = null,
+    @get:JsonProperty("funding_ba", required=true)@field:JsonProperty("funding_ba", required=true)
+    val fundingBa: FundingBa?,
 
     @get:JsonProperty("historic_c", required=true)@field:JsonProperty("historic_c", required=true)
     val historicC: Long,
@@ -163,13 +169,14 @@ data class FeatureProperties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val inspection: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val inspectors: Any? = null,
 
-    @get:JsonProperty("last_updat")@field:JsonProperty("last_updat")
+    @get:JsonProperty("last_updat", required=true)@field:JsonProperty("last_updat", required=true)
     val lastUpdat: Any? = null,
 
-    @get:JsonProperty("level_accu")@field:JsonProperty("level_accu")
-    val levelAccu: LevelAccu? = null,
+    @get:JsonProperty("level_accu", required=true)@field:JsonProperty("level_accu", required=true)
+    val levelAccu: LevelAccu?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val material: Material,
@@ -183,17 +190,20 @@ data class FeatureProperties (
     @get:JsonProperty("number_lan", required=true)@field:JsonProperty("number_lan", required=true)
     val numberLAN: Long,
 
-    val owner: String? = null,
-    val positional: LevelAccu? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val owner: String?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val positional: LevelAccu?,
 
-    @get:JsonProperty("project_nu")@field:JsonProperty("project_nu")
-    val projectNu: String? = null,
+    @get:JsonProperty("project_nu", required=true)@field:JsonProperty("project_nu", required=true)
+    val projectNu: String?,
 
     @get:JsonProperty("rec_id", required=true)@field:JsonProperty("rec_id", required=true)
     val recID: Long,
 
-    @get:JsonProperty("record_cre")@field:JsonProperty("record_cre")
-    val recordCre: String? = null,
+    @get:JsonProperty("record_cre", required=true)@field:JsonProperty("record_cre", required=true)
+    val recordCre: String?,
 
     @get:JsonProperty("shape_area", required=true)@field:JsonProperty("shape_area", required=true)
     val shapeArea: Double,
@@ -204,7 +214,7 @@ data class FeatureProperties (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val status: Status,
 
-    @get:JsonProperty("survey_num")@field:JsonProperty("survey_num")
+    @get:JsonProperty("survey_num", required=true)@field:JsonProperty("survey_num", required=true)
     val surveyNum: Any? = null,
 
     @get:JsonProperty("toe_rl", required=true)@field:JsonProperty("toe_rl", required=true)
@@ -213,12 +223,16 @@ data class FeatureProperties (
     @get:JsonProperty("top_rl", required=true)@field:JsonProperty("top_rl", required=true)
     val topRl: Double,
 
-    val type: PropertiesType? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val type: PropertiesType?,
 
     @get:JsonProperty("update_dat", required=true)@field:JsonProperty("update_dat", required=true)
     val updateDAT: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val updatedate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val updateuser: Any? = null
 )
 
diff --git a/base/kotlin-jackson/test/inputs/json/misc/be234.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/be234.json/default/TopLevel.kt
index f1458f3..5a80b08 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/be234.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/be234.json/default/TopLevel.kt
@@ -55,6 +55,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -73,10 +74,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -85,16 +86,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
     val authorFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
-    val authorFlairText: String? = null,
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
+    val authorFlairText: String?,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -118,7 +119,8 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
-    val distinguished: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val distinguished: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val domain: Domain,
@@ -147,18 +149,20 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
     val linkFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
     val linkFlairText: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
-    val media: Media? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val media: Media?,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
     val mediaEmbed: MediaEmbed,
@@ -172,7 +176,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -190,10 +194,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -202,8 +206,8 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
-    val secureMedia: Media? = null,
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
+    val secureMedia: Media?,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
     val secureMediaEmbed: MediaEmbed,
@@ -211,7 +215,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
     val selftextHTML: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -232,7 +236,7 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
     val suggestedSort: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -256,7 +260,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/d23d5.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/d23d5.json/default/TopLevel.kt
index dce6ade..3d53e24 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/d23d5.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/d23d5.json/default/TopLevel.kt
@@ -62,7 +62,8 @@ data class TopLevel (
 typealias Facets = JsonNode
 
 data class Result (
-    val acronym: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val acronym: String?,
 
     @get:JsonProperty("created_at", required=true)@field:JsonProperty("created_at", required=true)
     val createdAt: String,
diff --git a/base/kotlin-jackson/test/inputs/json/misc/dec3a.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/dec3a.json/default/TopLevel.kt
index f4f27f1..c910413 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/dec3a.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/dec3a.json/default/TopLevel.kt
@@ -79,15 +79,16 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val created: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val deadline: Any? = null,
 
-    @get:JsonProperty("hiring_office")@field:JsonProperty("hiring_office")
+    @get:JsonProperty("hiring_office", required=true)@field:JsonProperty("hiring_office", required=true)
     val hiringOffice: Any? = null,
 
     @get:JsonProperty("hiring_org", required=true)@field:JsonProperty("hiring_org", required=true)
     val hiringOrg: HiringOrg,
 
-    @get:JsonProperty("job_id")@field:JsonProperty("job_id")
+    @get:JsonProperty("job_id", required=true)@field:JsonProperty("job_id", required=true)
     val jobID: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -108,7 +109,7 @@ data class Result (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val qualifications: String,
 
-    @get:JsonProperty("relocation_expenses")@field:JsonProperty("relocation_expenses")
+    @get:JsonProperty("relocation_expenses", required=true)@field:JsonProperty("relocation_expenses", required=true)
     val relocationExpenses: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -163,7 +164,7 @@ data class Location (
     @get:JsonProperty("postal_code", required=true)@field:JsonProperty("postal_code", required=true)
     val postalCode: String,
 
-    @get:JsonProperty("sub_premise")@field:JsonProperty("sub_premise")
+    @get:JsonProperty("sub_premise", required=true)@field:JsonProperty("sub_premise", required=true)
     val subPremise: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/misc/f22f5.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/misc/f22f5.json/default/TopLevel.kt
index 4faecf1..42b9915 100644
--- a/base/kotlin-jackson/test/inputs/json/misc/f22f5.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/misc/f22f5.json/default/TopLevel.kt
@@ -53,6 +53,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -71,10 +72,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -83,16 +84,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
     val authorFlairCSSClass: Any? = null,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
     val authorFlairText: Any? = null,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -116,6 +117,7 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Double,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val distinguished: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -145,17 +147,19 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
-    val linkFlairCSSClass: String? = null,
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
+    val linkFlairCSSClass: String?,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
-    val linkFlairText: String? = null,
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
+    val linkFlairText: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val media: Any? = null,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
@@ -170,7 +174,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -182,10 +186,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -194,7 +198,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
     val secureMedia: Any? = null,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
@@ -203,7 +207,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
     val selftextHTML: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -224,7 +228,7 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
     val suggestedSort: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -242,7 +246,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/priority/bug2590.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/bug2590.json/default/TopLevel.kt
index 626ec27..85aa18d 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/bug2590.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/bug2590.json/default/TopLevel.kt
@@ -46,8 +46,11 @@ data class TopLevel (
 }
 
 data class Invoice (
-    val createdAt: OffsetDateTime? = null,
-    val dueDate: LocalDate? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val createdAt: OffsetDateTime?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val dueDate: LocalDate?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String
diff --git a/base/kotlin-jackson/test/inputs/json/priority/combinations1.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/combinations1.json/default/TopLevel.kt
index c5fc8f2..e45e86a 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/combinations1.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/combinations1.json/default/TopLevel.kt
@@ -223,28 +223,64 @@ sealed class CerographElement {
 }
 
 data class CerographClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val apotropaion: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val casuary: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val creaker: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val disqualification: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val imperatorious: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val impermeabilize: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val metastoma: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val noctidiurnal: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonreserve: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ophthalmotonometry: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pailful: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pigfish: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pongee: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val prosodical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val scrofuloderm: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val storekeeping: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val therologist: Any? = null,
 
-    @get:JsonProperty("Tolowa")@field:JsonProperty("Tolowa")
+    @get:JsonProperty("Tolowa", required=true)@field:JsonProperty("Tolowa", required=true)
     val tolowa: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tradeful: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unriveting: Any? = null
 )
 
@@ -334,6 +370,7 @@ data class CimeliaClass (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val homocerc: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonbookish: Any? = null
 )
 
@@ -492,34 +529,64 @@ sealed class CredulityElement {
 }
 
 data class CredulityClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ammonolytic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bushmaster: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val considering: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val consuetudinary: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val embarras: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val fineness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val flaithship: Any? = null,
 
-    @get:JsonProperty("Flavia")@field:JsonProperty("Flavia")
+    @get:JsonProperty("Flavia", required=true)@field:JsonProperty("Flavia", required=true)
     val flavia: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gruffly: Any? = null,
 
-    @get:JsonProperty("Hedychium")@field:JsonProperty("Hedychium")
+    @get:JsonProperty("Hedychium", required=true)@field:JsonProperty("Hedychium", required=true)
     val hedychium: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val leadwort: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val overseriously: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val parabola: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pectinatodenticulate: Any? = null,
 
-    @get:JsonProperty("Popean")@field:JsonProperty("Popean")
+    @get:JsonProperty("Popean", required=true)@field:JsonProperty("Popean", required=true)
     val popean: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pornocrat: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quadrisect: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val seriality: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vamphorn: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val wharp: Any? = null
 )
 
@@ -566,33 +633,64 @@ sealed class DeruralizeElement {
 }
 
 data class DeruralizeClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bockerel: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val boulder: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val churrus: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val counterdigged: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dialogite: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val digenic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dunbird: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ergatogyne: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val fiendful: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val jackrod: Any? = null,
 
-    @get:JsonProperty("Jehovistic")@field:JsonProperty("Jehovistic")
+    @get:JsonProperty("Jehovistic", required=true)@field:JsonProperty("Jehovistic", required=true)
     val jehovistic: Any? = null,
 
-    @get:JsonProperty("Paninean")@field:JsonProperty("Paninean")
+    @get:JsonProperty("Paninean", required=true)@field:JsonProperty("Paninean", required=true)
     val paninean: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val panther: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val placentigerous: Any? = null,
 
-    @get:JsonProperty("Romney")@field:JsonProperty("Romney")
+    @get:JsonProperty("Romney", required=true)@field:JsonProperty("Romney", required=true)
     val romney: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sparm: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tocsin: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unnicked: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unstavable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val windfirm: Any? = null
 )
 
@@ -618,27 +716,64 @@ sealed class DiaereseElement {
 }
 
 data class DiaereseClass (
-    @get:JsonProperty("Amoreuxia")@field:JsonProperty("Amoreuxia")
+    @get:JsonProperty("Amoreuxia", required=true)@field:JsonProperty("Amoreuxia", required=true)
     val amoreuxia: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ani: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bernicle: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val blackwasher: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val blowhard: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val broma: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val closecross: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val congregationalism: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val grayly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val historically: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hoast: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val irretentive: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val parcener: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pedder: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pseudoanatomic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rhizocarpian: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val samel: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val silker: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val subdentated: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val subobscure: Any? = null
 )
 
@@ -685,35 +820,64 @@ sealed class Eleutheromania {
 }
 
 data class Encrust (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val comradely: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val diacanthous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val feminineness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gossamered: Any? = null,
 
-    @get:JsonProperty("Hibernia")@field:JsonProperty("Hibernia")
+    @get:JsonProperty("Hibernia", required=true)@field:JsonProperty("Hibernia", required=true)
     val hibernia: Any? = null,
 
-    @get:JsonProperty("Hibiscus")@field:JsonProperty("Hibiscus")
+    @get:JsonProperty("Hibiscus", required=true)@field:JsonProperty("Hibiscus", required=true)
     val hibiscus: Any? = null,
 
-    @get:JsonProperty("Lepidosauria")@field:JsonProperty("Lepidosauria")
+    @get:JsonProperty("Lepidosauria", required=true)@field:JsonProperty("Lepidosauria", required=true)
     val lepidosauria: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val lollingly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val manager: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mechanic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val overminuteness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val papelonne: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val plebification: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pugmiller: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val recoveror: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val spermatoblastic: Any? = null,
 
-    @get:JsonProperty("Syllidae")@field:JsonProperty("Syllidae")
+    @get:JsonProperty("Syllidae", required=true)@field:JsonProperty("Syllidae", required=true)
     val syllidae: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ungyved: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val whirlabout: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val woodenware: Any? = null
 )
 
@@ -793,34 +957,64 @@ sealed class FagginglyElement {
 }
 
 data class FagginglyClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val abranchian: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val aculeiform: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val adiaphoristic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val adoptionism: Any? = null,
 
-    @get:JsonProperty("Anglic")@field:JsonProperty("Anglic")
+    @get:JsonProperty("Anglic", required=true)@field:JsonProperty("Anglic", required=true)
     val anglic: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val antrotomy: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val coerciveness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val decorist: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val duckhood: Any? = null,
 
-    @get:JsonProperty("Heteromeri")@field:JsonProperty("Heteromeri")
+    @get:JsonProperty("Heteromeri", required=true)@field:JsonProperty("Heteromeri", required=true)
     val heteromeri: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hypochnose: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val lochage: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val melee: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonconformitant: Any? = null,
 
-    @get:JsonProperty("Poinsettia")@field:JsonProperty("Poinsettia")
+    @get:JsonProperty("Poinsettia", required=true)@field:JsonProperty("Poinsettia", required=true)
     val poinsettia: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val putatively: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val semivolatile: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val soleas: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unfastenable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unmillinered: Any? = null
 )
 
@@ -843,37 +1037,64 @@ sealed class FenkElement {
 }
 
 data class FenkClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val apoise: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val astronomize: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cockhorse: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val copular: Any? = null,
 
-    @get:JsonProperty("Dagomba")@field:JsonProperty("Dagomba")
+    @get:JsonProperty("Dagomba", required=true)@field:JsonProperty("Dagomba", required=true)
     val dagomba: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val draffy: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val foreigner: Any? = null,
 
-    @get:JsonProperty("Guyandot")@field:JsonProperty("Guyandot")
+    @get:JsonProperty("Guyandot", required=true)@field:JsonProperty("Guyandot", required=true)
     val guyandot: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val neurogliosis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val osmious: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val palpitate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rebukeable: Any? = null,
 
-    @get:JsonProperty("Reinwardtia")@field:JsonProperty("Reinwardtia")
+    @get:JsonProperty("Reinwardtia", required=true)@field:JsonProperty("Reinwardtia", required=true)
     val reinwardtia: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val reservatory: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val scalt: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val scripturalize: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tintometer: Any? = null,
 
-    @get:JsonProperty("Tritoness")@field:JsonProperty("Tritoness")
+    @get:JsonProperty("Tritoness", required=true)@field:JsonProperty("Tritoness", required=true)
     val tritoness: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val undergrade: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val undermountain: Any? = null
 )
 
@@ -899,34 +1120,64 @@ sealed class FlagmakingElement {
 }
 
 data class FlagmakingClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val albarco: Any? = null,
 
-    @get:JsonProperty("Bunodonta")@field:JsonProperty("Bunodonta")
+    @get:JsonProperty("Bunodonta", required=true)@field:JsonProperty("Bunodonta", required=true)
     val bunodonta: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hornify: Any? = null,
 
-    @get:JsonProperty("Hydrocorisae")@field:JsonProperty("Hydrocorisae")
+    @get:JsonProperty("Hydrocorisae", required=true)@field:JsonProperty("Hydrocorisae", required=true)
     val hydrocorisae: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hypoglossus: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val inexpiably: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ingratitude: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ladyfly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val medicament: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val monogrammatic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nobbut: Any? = null,
 
-    @get:JsonProperty("Notacanthidae")@field:JsonProperty("Notacanthidae")
+    @get:JsonProperty("Notacanthidae", required=true)@field:JsonProperty("Notacanthidae", required=true)
     val notacanthidae: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val polyplacophore: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val proexercise: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val protoplast: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val puzzling: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val splanchnoskeleton: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unloveliness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unquarantined: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unrenounceable: Any? = null
 )
 
@@ -1219,6 +1470,7 @@ data class Interacinar (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tubbing: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val untrimmed: Any? = null
 )
 
diff --git a/base/kotlin-jackson/test/inputs/json/priority/combinations2.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/combinations2.json/default/TopLevel.kt
index 71e49dd..cce47b4 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/combinations2.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/combinations2.json/default/TopLevel.kt
@@ -103,6 +103,7 @@ data class TopLevel (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val annihilator: List<Map<String, Long?>?>,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val annulose: Any? = null,
 
     @get:JsonProperty("Ansarie", required=true)@field:JsonProperty("Ansarie", required=true)
@@ -323,28 +324,64 @@ sealed class AlleviateElement {
 }
 
 data class AlleviateClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val apriori: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val beggarer: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val brokenheartedly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val debilitation: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val frike: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gastrolith: Any? = null,
 
-    @get:JsonProperty("Hulsean")@field:JsonProperty("Hulsean")
+    @get:JsonProperty("Hulsean", required=true)@field:JsonProperty("Hulsean", required=true)
     val hulsean: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val orthocentric: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val petaly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val probudgeting: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val reacquire: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val scow: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val shutoff: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val subcontiguous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val suffumigate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val transformable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uncoroneted: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unparking: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unvarnishedness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val wherewithal: Any? = null
 )
 
@@ -382,6 +419,7 @@ data class Rebecca (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val homocerc: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonbookish: Any? = null
 )
 
@@ -465,30 +503,64 @@ sealed class AnkeeElement {
 }
 
 data class AnkeeClass (
-    @get:JsonProperty("Anomoean")@field:JsonProperty("Anomoean")
+    @get:JsonProperty("Anomoean", required=true)@field:JsonProperty("Anomoean", required=true)
     val anomoean: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val barleyhood: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val befriender: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val brutishness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cephalalgy: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cirurgian: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val conventionally: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val jackshay: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val milammeter: Any? = null,
 
-    @get:JsonProperty("Naja")@field:JsonProperty("Naja")
+    @get:JsonProperty("Naja", required=true)@field:JsonProperty("Naja", required=true)
     val naja: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ombrological: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val phonasthenia: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val retrievableness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val snakily: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val swot: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tartlet: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thiofuran: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tracheophone: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tuglike: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unscratchingly: Any? = null
 )
 
@@ -514,34 +586,64 @@ sealed class AnsarieElement {
 }
 
 data class AnsarieClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val accension: Any? = null,
 
-    @get:JsonProperty("Alida")@field:JsonProperty("Alida")
+    @get:JsonProperty("Alida", required=true)@field:JsonProperty("Alida", required=true)
     val alida: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val asteria: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val beriberic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val edgebone: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gastrodialysis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val geographic: Any? = null,
 
-    @get:JsonProperty("Ictonyx")@field:JsonProperty("Ictonyx")
+    @get:JsonProperty("Ictonyx", required=true)@field:JsonProperty("Ictonyx", required=true)
     val ictonyx: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val metrocele: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val misgraft: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val monteith: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val notcher: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val prorestriction: Any? = null,
 
-    @get:JsonProperty("Ramist")@field:JsonProperty("Ramist")
+    @get:JsonProperty("Ramist", required=true)@field:JsonProperty("Ramist", required=true)
     val ramist: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val throatlet: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unfair: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unsynonymous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val water: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val zestfully: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val zincic: Any? = null
 )
 
@@ -783,35 +885,64 @@ sealed class ChytridiaceaeElement {
 }
 
 data class ChytridiaceaeClass (
-    @get:JsonProperty("Batidaceae")@field:JsonProperty("Batidaceae")
+    @get:JsonProperty("Batidaceae", required=true)@field:JsonProperty("Batidaceae", required=true)
     val batidaceae: Any? = null,
 
-    @get:JsonProperty("Brechites")@field:JsonProperty("Brechites")
+    @get:JsonProperty("Brechites", required=true)@field:JsonProperty("Brechites", required=true)
     val brechites: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val codespairer: Any? = null,
 
-    @get:JsonProperty("Emery")@field:JsonProperty("Emery")
+    @get:JsonProperty("Emery", required=true)@field:JsonProperty("Emery", required=true)
     val emery: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val enervative: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val excriminate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val goshenite: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val grime: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gritten: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hectorly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val intermediation: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val meeterly: Any? = null,
 
-    @get:JsonProperty("Narraganset")@field:JsonProperty("Narraganset")
+    @get:JsonProperty("Narraganset", required=true)@field:JsonProperty("Narraganset", required=true)
     val narraganset: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val onymatic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val paddlecock: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thana: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thornily: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uckia: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unmettle: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vorticellid: Any? = null
 )
 
@@ -948,34 +1079,64 @@ sealed class GryphosaurusElement {
 }
 
 data class GryphosaurusClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val amissibility: Any? = null,
 
-    @get:JsonProperty("Burushaski")@field:JsonProperty("Burushaski")
+    @get:JsonProperty("Burushaski", required=true)@field:JsonProperty("Burushaski", required=true)
     val burushaski: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val citronin: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val coplaintiff: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val disquisitionary: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val enoplan: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val faintness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hebetomy: Any? = null,
 
-    @get:JsonProperty("islandry")@field:JsonProperty("islandry")
+    @get:JsonProperty("islandry", required=true)@field:JsonProperty("islandry", required=true)
     val islandry: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val lameduck: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val overbattle: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val overinterested: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val phrenologic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rainband: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val shiningly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val stamineous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val subscapularis: Any? = null,
 
-    @get:JsonProperty("Tahami")@field:JsonProperty("Tahami")
+    @get:JsonProperty("Tahami", required=true)@field:JsonProperty("Tahami", required=true)
     val tahami: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val undaubed: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val underntime: Any? = null
 )
 
@@ -1068,33 +1229,64 @@ sealed class OskarElement {
 }
 
 data class OskarClass (
-    @get:JsonProperty("Acrobates")@field:JsonProperty("Acrobates")
+    @get:JsonProperty("Acrobates", required=true)@field:JsonProperty("Acrobates", required=true)
     val acrobates: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val beanshooter: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bearhound: Any? = null,
 
-    @get:JsonProperty("Cayuga")@field:JsonProperty("Cayuga")
+    @get:JsonProperty("Cayuga", required=true)@field:JsonProperty("Cayuga", required=true)
     val cayuga: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val guarneri: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hypochondriacism: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val indication: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val jaculative: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nagana: Any? = null,
 
-    @get:JsonProperty("Netherlandish")@field:JsonProperty("Netherlandish")
+    @get:JsonProperty("Netherlandish", required=true)@field:JsonProperty("Netherlandish", required=true)
     val netherlandish: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val noctivagous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonphysiological: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val praxis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val provision: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val subterhuman: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sunlit: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val syncraniate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val teachment: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unmutinous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unstoppable: Any? = null
 )
 
diff --git a/base/kotlin-jackson/test/inputs/json/priority/combinations3.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/combinations3.json/default/TopLevel.kt
index 4a4a729..843287b 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/combinations3.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/combinations3.json/default/TopLevel.kt
@@ -219,28 +219,64 @@ sealed class JurorElement {
 }
 
 data class JurorClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val adipsy: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val auxiliator: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val benda: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val benjamin: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val brandling: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val epicurishly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val eremochaetous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val marten: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val monocline: Any? = null,
 
-    @get:JsonProperty("Olea")@field:JsonProperty("Olea")
+    @get:JsonProperty("Olea", required=true)@field:JsonProperty("Olea", required=true)
     val olea: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val palgat: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pennyworth: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pioury: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pragmatistic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val stylelessness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val systematical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thready: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uncontemporary: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uncouched: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uninhabitedness: Any? = null
 )
 
@@ -284,28 +320,64 @@ sealed class LadronismElement {
 }
 
 data class LadronismClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val acclaimer: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val achree: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val base: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val conundrumize: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val degerminator: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val describable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val exasperatedly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val heroine: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val indazin: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val luteous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val papular: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pritch: Any? = null,
 
-    @get:JsonProperty("Prodenia")@field:JsonProperty("Prodenia")
+    @get:JsonProperty("Prodenia", required=true)@field:JsonProperty("Prodenia", required=true)
     val prodenia: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val seege: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val shopgirl: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tragedietta: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unsparse: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uplook: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vermiformis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val whafabout: Any? = null
 )
 
@@ -331,28 +403,64 @@ sealed class LandlubberlyElement {
 }
 
 data class LandlubberlyClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val acropoleis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val aminate: Any? = null,
 
-    @get:JsonProperty("Amyraldism")@field:JsonProperty("Amyraldism")
+    @get:JsonProperty("Amyraldism", required=true)@field:JsonProperty("Amyraldism", required=true)
     val amyraldism: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bipenniform: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bugre: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val calycule: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val caoutchouc: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val disprover: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val fitroot: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val fulgently: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val kickup: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val laevoversion: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val moter: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val objectivity: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val posterity: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val postnuptial: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val precedentary: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val saddling: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val subcurrent: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unrecriminative: Any? = null
 )
 
@@ -522,6 +630,7 @@ data class MonaziteClass (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val homocerc: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonbookish: Any? = null
 )
 
@@ -707,6 +816,7 @@ data class Noncontributing (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sparsely: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unrequested: Any? = null
 )
 
@@ -771,31 +881,64 @@ sealed class OccupationalistElement {
 }
 
 data class OccupationalistClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val beholdable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val brotuliform: Any? = null,
 
-    @get:JsonProperty("Chimakum")@field:JsonProperty("Chimakum")
+    @get:JsonProperty("Chimakum", required=true)@field:JsonProperty("Chimakum", required=true)
     val chimakum: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val doodler: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val emulsin: Any? = null,
 
-    @get:JsonProperty("Fin")@field:JsonProperty("Fin")
+    @get:JsonProperty("Fin", required=true)@field:JsonProperty("Fin", required=true)
     val fin: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val flourishing: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val flueless: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val furtively: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gritter: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val interwish: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val monoxylic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val myristic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nightwear: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val peruser: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val theoastrological: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thumby: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tingitid: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val trailless: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unpocketed: Any? = null
 )
 
@@ -821,33 +964,64 @@ sealed class OutrivalElement {
 }
 
 data class OutrivalClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val adroitly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bridehood: Any? = null,
 
-    @get:JsonProperty("Castoroides")@field:JsonProperty("Castoroides")
+    @get:JsonProperty("Castoroides", required=true)@field:JsonProperty("Castoroides", required=true)
     val castoroides: Any? = null,
 
-    @get:JsonProperty("Czechoslovak")@field:JsonProperty("Czechoslovak")
+    @get:JsonProperty("Czechoslovak", required=true)@field:JsonProperty("Czechoslovak", required=true)
     val czechoslovak: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val diagenesis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dihexahedron: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dopester: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val eumerism: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val flyness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val fouler: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val laudanosine: Any? = null,
 
-    @get:JsonProperty("Lingulidae")@field:JsonProperty("Lingulidae")
+    @get:JsonProperty("Lingulidae", required=true)@field:JsonProperty("Lingulidae", required=true)
     val lingulidae: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val minutary: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mitra: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val opisthorchiasis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pensively: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pubigerous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rebellious: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val recodify: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unpaced: Any? = null
 )
 
@@ -1158,30 +1332,64 @@ sealed class PotwhiskyElement {
 }
 
 data class PotwhiskyClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val arciform: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cresolin: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val disheartener: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val disproportionable: Any? = null,
 
-    @get:JsonProperty("Euchorda")@field:JsonProperty("Euchorda")
+    @get:JsonProperty("Euchorda", required=true)@field:JsonProperty("Euchorda", required=true)
     val euchorda: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ferryway: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val filamentiferous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val flemish: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val forgainst: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val grainering: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val irrevoluble: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val kindredship: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pinguitudinous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val simpletonic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val singsong: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val submergement: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val supraoesophagal: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val thrashel: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tyremesis: Any? = null,
 
-    @get:JsonProperty("Yoruba")@field:JsonProperty("Yoruba")
+    @get:JsonProperty("Yoruba", required=true)@field:JsonProperty("Yoruba", required=true)
     val yoruba: Any? = null
 )
 
@@ -1228,36 +1436,64 @@ sealed class PrefreshmanElement {
 }
 
 data class PrefreshmanClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val azorubine: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val choroiditis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val coagulatory: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cyclorama: Any? = null,
 
-    @get:JsonProperty("Dolphus")@field:JsonProperty("Dolphus")
+    @get:JsonProperty("Dolphus", required=true)@field:JsonProperty("Dolphus", required=true)
     val dolphus: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val duckhearted: Any? = null,
 
-    @get:JsonProperty("Ficus")@field:JsonProperty("Ficus")
+    @get:JsonProperty("Ficus", required=true)@field:JsonProperty("Ficus", required=true)
     val ficus: Any? = null,
 
-    @get:JsonProperty("Gemaric")@field:JsonProperty("Gemaric")
+    @get:JsonProperty("Gemaric", required=true)@field:JsonProperty("Gemaric", required=true)
     val gemaric: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val jugation: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val myoliposis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonnomination: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val palay: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pentactinal: Any? = null,
 
-    @get:JsonProperty("Phaet")@field:JsonProperty("Phaet")
+    @get:JsonProperty("Phaet", required=true)@field:JsonProperty("Phaet", required=true)
     val phaet: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val piquant: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val registration: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val remancipation: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val scutatiform: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val theodolite: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val underward: Any? = null
 )
 
diff --git a/base/kotlin-jackson/test/inputs/json/priority/combinations4.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/combinations4.json/default/TopLevel.kt
index 4f9dd93..33a24d2 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/combinations4.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/combinations4.json/default/TopLevel.kt
@@ -277,28 +277,64 @@ sealed class PulpitismElement {
 }
 
 data class PulpitismClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val abnet: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val buckhorn: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val calciform: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val chelophore: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cogitation: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val decreeable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val despicable: Any? = null,
 
-    @get:JsonProperty("isodiazo")@field:JsonProperty("isodiazo")
+    @get:JsonProperty("isodiazo", required=true)@field:JsonProperty("isodiazo", required=true)
     val isodiazo: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val jadedly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val leptochlorite: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nursling: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val palamedean: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val photoheliograph: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val pipewood: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val roberd: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val statable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val superassume: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val syllabe: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val toughhead: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val underburn: Any? = null
 )
 
@@ -321,28 +357,64 @@ sealed class PyodermiaElement {
 }
 
 data class PyodermiaClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val aphoristically: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val apophyllous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cognize: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dermonosology: Any? = null,
 
-    @get:JsonProperty("Gyppo")@field:JsonProperty("Gyppo")
+    @get:JsonProperty("Gyppo", required=true)@field:JsonProperty("Gyppo", required=true)
     val gyppo: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ither: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val juglandaceous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val litho: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val macropterous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val photographer: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val romancing: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rumness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val somniloquist: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val stressfully: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tactically: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tracheophony: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unappositely: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unclothedly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unimplied: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unsyncopated: Any? = null
 )
 
@@ -380,6 +452,7 @@ data class QuebrachineClass (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val homocerc: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonbookish: Any? = null
 )
 
@@ -576,34 +649,64 @@ sealed class RewriteElement {
 }
 
 data class RewriteClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val accountancy: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cacotrophic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val contest: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val couthily: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val falculate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val foreseize: Any? = null,
 
-    @get:JsonProperty("Hyades")@field:JsonProperty("Hyades")
+    @get:JsonProperty("Hyades", required=true)@field:JsonProperty("Hyades", required=true)
     val hyades: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val lemnad: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val monotheistically: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonflying: Any? = null,
 
-    @get:JsonProperty("Ptenoglossa")@field:JsonProperty("Ptenoglossa")
+    @get:JsonProperty("Ptenoglossa", required=true)@field:JsonProperty("Ptenoglossa", required=true)
     val ptenoglossa: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val repatch: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rodman: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val strung: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val titmal: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val twalpennyworth: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unblamable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vertical: Any? = null,
 
-    @get:JsonProperty("Whiggification")@field:JsonProperty("Whiggification")
+    @get:JsonProperty("Whiggification", required=true)@field:JsonProperty("Whiggification", required=true)
     val whiggification: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val yardman: Any? = null
 )
 
@@ -647,28 +750,64 @@ sealed class SantirElement {
 }
 
 data class SantirClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val admiredly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val demicaponier: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val epitympanic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val investitor: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val lupiform: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val monoflagellate: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val paleoethnic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val prediscountable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rhetoricals: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val roomth: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val saccharose: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val septonasal: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val serpenticide: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val setarious: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val spaework: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val stylite: Any? = null,
 
-    @get:JsonProperty("Suessiones")@field:JsonProperty("Suessiones")
+    @get:JsonProperty("Suessiones", required=true)@field:JsonProperty("Suessiones", required=true)
     val suessiones: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val timelily: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unprofaned: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vorticular: Any? = null
 )
 
@@ -745,28 +884,64 @@ data class SaxtenClass (
 )
 
 data class Scatty (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val aeriferous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val antical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val antighostism: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val arcanum: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val autotrophy: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val baronial: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val caffeine: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gorgoniacean: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val heroical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hydropical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mechanology: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val musicopoetic: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val officiality: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val oftentimes: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ophthalmotonometer: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val reflectively: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val springer: Any? = null,
 
-    @get:JsonProperty("Tabasco")@field:JsonProperty("Tabasco")
+    @get:JsonProperty("Tabasco", required=true)@field:JsonProperty("Tabasco", required=true)
     val tabasco: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val teleianthous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val uncombated: Any? = null
 )
 
@@ -870,34 +1045,64 @@ sealed class SisteringElement {
 }
 
 data class SisteringClass (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val amphicarpic: Any? = null,
 
-    @get:JsonProperty("Chianti")@field:JsonProperty("Chianti")
+    @get:JsonProperty("Chianti", required=true)@field:JsonProperty("Chianti", required=true)
     val chianti: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val frigorific: Any? = null,
 
-    @get:JsonProperty("Haplomi")@field:JsonProperty("Haplomi")
+    @get:JsonProperty("Haplomi", required=true)@field:JsonProperty("Haplomi", required=true)
     val haplomi: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val hyperkinesis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val laudable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val madwoman: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val maimedly: Any? = null,
 
-    @get:JsonProperty("Micropterygidae")@field:JsonProperty("Micropterygidae")
+    @get:JsonProperty("Micropterygidae", required=true)@field:JsonProperty("Micropterygidae", required=true)
     val micropterygidae: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val microrhabdus: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nondense: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val phlebemphraxis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val redsear: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val schismatical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val tartryl: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unabhorred: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val undeliberateness: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unmixable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val untruckling: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vineal: Any? = null
 )
 
@@ -1427,35 +1632,64 @@ sealed class UnstressedElement {
 }
 
 data class UnstressedClass (
-    @get:JsonProperty("Alain")@field:JsonProperty("Alain")
+    @get:JsonProperty("Alain", required=true)@field:JsonProperty("Alain", required=true)
     val alain: Any? = null,
 
-    @get:JsonProperty("Amphirhina")@field:JsonProperty("Amphirhina")
+    @get:JsonProperty("Amphirhina", required=true)@field:JsonProperty("Amphirhina", required=true)
     val amphirhina: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val antimachinery: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val coldish: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val crantara: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val distinguishing: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val elytroposis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val gentianwort: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val heliosis: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val instrumental: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val introinflection: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val kala: Any? = null,
 
-    @get:JsonProperty("Lincolnian")@field:JsonProperty("Lincolnian")
+    @get:JsonProperty("Lincolnian", required=true)@field:JsonProperty("Lincolnian", required=true)
     val lincolnian: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val metad: Any? = null,
 
-    @get:JsonProperty("Sarcophilus")@field:JsonProperty("Sarcophilus")
+    @get:JsonProperty("Sarcophilus", required=true)@field:JsonProperty("Sarcophilus", required=true)
     val sarcophilus: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val swingingly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unconformity: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val undecreed: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val venerable: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val vowellessness: Any? = null
 )
 
@@ -1559,29 +1793,63 @@ sealed class WrothyElement {
 }
 
 data class WrothyClass (
-    @get:JsonProperty("Aeschynanthus")@field:JsonProperty("Aeschynanthus")
+    @get:JsonProperty("Aeschynanthus", required=true)@field:JsonProperty("Aeschynanthus", required=true)
     val aeschynanthus: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val aquiferous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val cheapener: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val enumeration: Any? = null,
 
-    @get:JsonProperty("Ephesine")@field:JsonProperty("Ephesine")
+    @get:JsonProperty("Ephesine", required=true)@field:JsonProperty("Ephesine", required=true)
     val ephesine: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val escadrille: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val estrous: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val interestedly: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val katakinetomer: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mortification: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val morula: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val orthosymmetrical: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val overbark: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val politist: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val qualified: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sphenomalar: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val throatful: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val transhumance: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val triandrian: Any? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unbooked: Any? = null
 )
diff --git a/base/kotlin-jackson/test/inputs/json/priority/list.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/list.json/default/TopLevel.kt
index 8124cad..4b2eace 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/list.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/list.json/default/TopLevel.kt
@@ -23,7 +23,8 @@ data class TopLevel (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val data: Long,
 
-    val next: TopLevel? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val next: TopLevel?
 ) {
     fun toJson() = mapper.writeValueAsString(this)
 
diff --git a/base/kotlin-jackson/test/inputs/json/samples/github-events.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/github-events.json/default/TopLevel.kt
index a816426..8cf0f4f 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/github-events.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/github-events.json/default/TopLevel.kt
@@ -242,6 +242,7 @@ data class Author (
 )
 
 data class Issue (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val assignee: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -250,8 +251,8 @@ data class Issue (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val body: String,
 
-    @get:JsonProperty("closed_at")@field:JsonProperty("closed_at")
-    val closedAt: OffsetDateTime? = null,
+    @get:JsonProperty("closed_at", required=true)@field:JsonProperty("closed_at", required=true)
+    val closedAt: OffsetDateTime?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val comments: Long,
@@ -280,7 +281,8 @@ data class Issue (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
-    val milestone: Milestone? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val milestone: Milestone?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val number: Long,
@@ -325,7 +327,7 @@ data class Label (
 )
 
 data class Milestone (
-    @get:JsonProperty("closed_at")@field:JsonProperty("closed_at")
+    @get:JsonProperty("closed_at", required=true)@field:JsonProperty("closed_at", required=true)
     val closedAt: Any? = null,
 
     @get:JsonProperty("closed_issues", required=true)@field:JsonProperty("closed_issues", required=true)
@@ -340,8 +342,8 @@ data class Milestone (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val description: String,
 
-    @get:JsonProperty("due_on")@field:JsonProperty("due_on")
-    val dueOn: OffsetDateTime? = null,
+    @get:JsonProperty("due_on", required=true)@field:JsonProperty("due_on", required=true)
+    val dueOn: OffsetDateTime?,
 
     @get:JsonProperty("html_url", required=true)@field:JsonProperty("html_url", required=true)
     val htmlURL: String,
@@ -389,6 +391,7 @@ data class PayloadPullRequest (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val additions: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val assignee: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -451,6 +454,7 @@ data class PayloadPullRequest (
     @get:JsonProperty("merge_commit_sha", required=true)@field:JsonProperty("merge_commit_sha", required=true)
     val mergeCommitSHA: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mergeable: Any? = null,
 
     @get:JsonProperty("mergeable_state", required=true)@field:JsonProperty("mergeable_state", required=true)
@@ -465,6 +469,7 @@ data class PayloadPullRequest (
     @get:JsonProperty("merged_by", required=true)@field:JsonProperty("merged_by", required=true)
     val mergedBy: User,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val milestone: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -473,6 +478,7 @@ data class PayloadPullRequest (
     @get:JsonProperty("patch_url", required=true)@field:JsonProperty("patch_url", required=true)
     val patchURL: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val rebaseable: Any? = null,
 
     @get:JsonProperty("requested_reviewers", required=true)@field:JsonProperty("requested_reviewers", required=true)
@@ -656,7 +662,7 @@ data class BaseRepo (
     @get:JsonProperty("milestones_url", required=true)@field:JsonProperty("milestones_url", required=true)
     val milestonesURL: String,
 
-    @get:JsonProperty("mirror_url")@field:JsonProperty("mirror_url")
+    @get:JsonProperty("mirror_url", required=true)@field:JsonProperty("mirror_url", required=true)
     val mirrorURL: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.kt
index 3ef05a2..93a806d 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.kt
@@ -51,9 +51,10 @@ data class TopLevel (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val mapValue: Map<String, Long?>,
 
-    @get:JsonProperty("name with spaces")@field:JsonProperty("name with spaces")
+    @get:JsonProperty("name with spaces", required=true)@field:JsonProperty("name with spaces", required=true)
     val nameWithSpaces: Any? = null,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nullValue: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/samples/null-safe.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/null-safe.json/default/TopLevel.kt
index e2cd58b..f47edc7 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/null-safe.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/null-safe.json/default/TopLevel.kt
@@ -53,7 +53,8 @@ data class Item (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
 
-    val sex: Long? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val sex: Long?
 )
 
 data class Address (
diff --git a/base/kotlin-jackson/test/inputs/json/samples/pokedex.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/pokedex.json/default/TopLevel.kt
index 8e694f3..2262ec6 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/pokedex.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/pokedex.json/default/TopLevel.kt
@@ -65,7 +65,8 @@ data class Pokemon (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val img: String,
 
-    val multipliers: List<Double>? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val multipliers: List<Double>?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val name: String,
diff --git a/base/kotlin-jackson/test/inputs/json/samples/reddit.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/reddit.json/default/TopLevel.kt
index 43c535b..c356b0c 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/reddit.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/reddit.json/default/TopLevel.kt
@@ -56,6 +56,7 @@ data class TopLevelData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val after: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val before: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -74,10 +75,10 @@ data class Child (
 )
 
 data class ChildData (
-    @get:JsonProperty("approved_at_utc")@field:JsonProperty("approved_at_utc")
+    @get:JsonProperty("approved_at_utc", required=true)@field:JsonProperty("approved_at_utc", required=true)
     val approvedAtUTC: Any? = null,
 
-    @get:JsonProperty("approved_by")@field:JsonProperty("approved_by")
+    @get:JsonProperty("approved_by", required=true)@field:JsonProperty("approved_by", required=true)
     val approvedBy: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -86,16 +87,16 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val author: String,
 
-    @get:JsonProperty("author_flair_css_class")@field:JsonProperty("author_flair_css_class")
-    val authorFlairCSSClass: String? = null,
+    @get:JsonProperty("author_flair_css_class", required=true)@field:JsonProperty("author_flair_css_class", required=true)
+    val authorFlairCSSClass: String?,
 
-    @get:JsonProperty("author_flair_text")@field:JsonProperty("author_flair_text")
-    val authorFlairText: String? = null,
+    @get:JsonProperty("author_flair_text", required=true)@field:JsonProperty("author_flair_text", required=true)
+    val authorFlairText: String?,
 
-    @get:JsonProperty("banned_at_utc")@field:JsonProperty("banned_at_utc")
+    @get:JsonProperty("banned_at_utc", required=true)@field:JsonProperty("banned_at_utc", required=true)
     val bannedAtUTC: Any? = null,
 
-    @get:JsonProperty("banned_by")@field:JsonProperty("banned_by")
+    @get:JsonProperty("banned_by", required=true)@field:JsonProperty("banned_by", required=true)
     val bannedBy: Any? = null,
 
     @get:JsonProperty("brand_safe", required=true)@field:JsonProperty("brand_safe", required=true)
@@ -119,7 +120,8 @@ data class ChildData (
     @get:JsonProperty("created_utc", required=true)@field:JsonProperty("created_utc", required=true)
     val createdUTC: Long,
 
-    val distinguished: String? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val distinguished: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val domain: Domain,
@@ -148,17 +150,19 @@ data class ChildData (
     @get:JsonProperty("is_video", required=true)@field:JsonProperty("is_video", required=true)
     val isVideo: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val likes: Any? = null,
 
-    @get:JsonProperty("link_flair_css_class")@field:JsonProperty("link_flair_css_class")
-    val linkFlairCSSClass: String? = null,
+    @get:JsonProperty("link_flair_css_class", required=true)@field:JsonProperty("link_flair_css_class", required=true)
+    val linkFlairCSSClass: String?,
 
-    @get:JsonProperty("link_flair_text")@field:JsonProperty("link_flair_text")
-    val linkFlairText: String? = null,
+    @get:JsonProperty("link_flair_text", required=true)@field:JsonProperty("link_flair_text", required=true)
+    val linkFlairText: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val locked: Boolean,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val media: Any? = null,
 
     @get:JsonProperty("media_embed", required=true)@field:JsonProperty("media_embed", required=true)
@@ -173,7 +177,7 @@ data class ChildData (
     @get:JsonProperty("num_comments", required=true)@field:JsonProperty("num_comments", required=true)
     val numComments: Long,
 
-    @get:JsonProperty("num_reports")@field:JsonProperty("num_reports")
+    @get:JsonProperty("num_reports", required=true)@field:JsonProperty("num_reports", required=true)
     val numReports: Any? = null,
 
     @get:JsonProperty("over_18", required=true)@field:JsonProperty("over_18", required=true)
@@ -194,10 +198,10 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val quarantine: Boolean,
 
-    @get:JsonProperty("removal_reason")@field:JsonProperty("removal_reason")
+    @get:JsonProperty("removal_reason", required=true)@field:JsonProperty("removal_reason", required=true)
     val removalReason: Any? = null,
 
-    @get:JsonProperty("report_reasons")@field:JsonProperty("report_reasons")
+    @get:JsonProperty("report_reasons", required=true)@field:JsonProperty("report_reasons", required=true)
     val reportReasons: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -206,7 +210,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val score: Long,
 
-    @get:JsonProperty("secure_media")@field:JsonProperty("secure_media")
+    @get:JsonProperty("secure_media", required=true)@field:JsonProperty("secure_media", required=true)
     val secureMedia: Any? = null,
 
     @get:JsonProperty("secure_media_embed", required=true)@field:JsonProperty("secure_media_embed", required=true)
@@ -215,7 +219,7 @@ data class ChildData (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val selftext: String,
 
-    @get:JsonProperty("selftext_html")@field:JsonProperty("selftext_html")
+    @get:JsonProperty("selftext_html", required=true)@field:JsonProperty("selftext_html", required=true)
     val selftextHTML: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -236,7 +240,7 @@ data class ChildData (
     @get:JsonProperty("subreddit_type", required=true)@field:JsonProperty("subreddit_type", required=true)
     val subredditType: SubredditType,
 
-    @get:JsonProperty("suggested_sort")@field:JsonProperty("suggested_sort")
+    @get:JsonProperty("suggested_sort", required=true)@field:JsonProperty("suggested_sort", required=true)
     val suggestedSort: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -260,7 +264,7 @@ data class ChildData (
     @get:JsonProperty("user_reports", required=true)@field:JsonProperty("user_reports", required=true)
     val userReports: List<Any?>,
 
-    @get:JsonProperty("view_count")@field:JsonProperty("view_count")
+    @get:JsonProperty("view_count", required=true)@field:JsonProperty("view_count", required=true)
     val viewCount: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/samples/spotify-album.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/spotify-album.json/default/TopLevel.kt
index 83aae08..2362a47 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/spotify-album.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/spotify-album.json/default/TopLevel.kt
@@ -137,11 +137,13 @@ data class Tracks (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val limit: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val next: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val offset: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val previous: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
diff --git a/base/kotlin-jackson/test/inputs/json/samples/us-senators.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/samples/us-senators.json/default/TopLevel.kt
index 24012ea..d7e3df8 100644
--- a/base/kotlin-jackson/test/inputs/json/samples/us-senators.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/samples/us-senators.json/default/TopLevel.kt
@@ -70,7 +70,8 @@ data class Meta (
 )
 
 data class Object (
-    val caucus: Party? = null,
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val caucus: Party?,
 
     @get:JsonProperty("congress_numbers", required=true)@field:JsonProperty("congress_numbers", required=true)
     val congressNumbers: List<Long>,
@@ -81,6 +82,7 @@ data class Object (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val description: String,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val district: Any? = null,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
@@ -89,8 +91,8 @@ data class Object (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val extra: Extra,
 
-    @get:JsonProperty("leadership_title")@field:JsonProperty("leadership_title")
-    val leadershipTitle: String? = null,
+    @get:JsonProperty("leadership_title", required=true)@field:JsonProperty("leadership_title", required=true)
+    val leadershipTitle: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val party: Party,
@@ -212,8 +214,11 @@ data class Person (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val sortname: String,
 
-    val twitterid: String? = null,
-    val youtubeid: String? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val twitterid: String?,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val youtubeid: String?
 )
 
 enum class Gender(val value: String) {
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/bool-string.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/bool-string.schema/default/TopLevel.kt
index 7a25ab4..0554340 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/bool-string.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/bool-string.schema/default/TopLevel.kt
@@ -33,7 +33,9 @@ val mapper = jacksonObjectMapper().apply {
 data class TopLevel (
     val arrNullable: List<String?>? = null,
     val arrOne: List<String>? = null,
-    val nullable: String? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val nullable: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val one: String,
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/enum-with-null.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/enum-with-null.schema/default/TopLevel.kt
index 32324ad..ec835c5 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/enum-with-null.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/enum-with-null.schema/default/TopLevel.kt
@@ -31,7 +31,8 @@ val mapper = jacksonObjectMapper().apply {
 }
 
 data class TopLevel (
-    val enum: EnumEnum? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val enum: EnumEnum?
 ) {
     fun toJson() = mapper.writeValueAsString(this)
 
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/integer-string.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/integer-string.schema/default/TopLevel.kt
index 0c729e3..6dc996d 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/integer-string.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/integer-string.schema/default/TopLevel.kt
@@ -34,7 +34,9 @@ val mapper = jacksonObjectMapper().apply {
 data class TopLevel (
     val arrNullable: List<String?>? = null,
     val arrOne: List<String>? = null,
-    val nullable: String? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val nullable: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val one: String,
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/strict-optional.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/strict-optional.schema/default/TopLevel.kt
index 8c32bbd..7e8b3fe 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/strict-optional.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/strict-optional.schema/default/TopLevel.kt
@@ -19,7 +19,8 @@ val mapper = jacksonObjectMapper().apply {
 }
 
 data class TopLevel (
-    val foo: Double? = null
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val foo: Double?
 ) {
     fun toJson() = mapper.writeValueAsString(this)
 
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/uuid.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/uuid.schema/default/TopLevel.kt
index 91a2d53..34fd190 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/uuid.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/uuid.schema/default/TopLevel.kt
@@ -21,7 +21,9 @@ val mapper = jacksonObjectMapper().apply {
 data class TopLevel (
     val arrNullable: List<String?>? = null,
     val arrOne: List<String>? = null,
-    val nullable: String? = null,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val nullable: String?,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val one: String,
