diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index c153ed99da0bf7f68d7ed9a1c6044493071adc3d..3f6fc5ce2317ab6e41b9cab51cede1fc7048a9a3 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -2041,10 +2041,12 @@ public class DefaultCodegen implements CodegenConfig {
                 property.allowableValues = allowableValues;
             }
         }
+
+        Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p);
+
         //Referenced enum case:
-        Schema r = ModelUtils.getReferencedSchema(this.openAPI, p);
-        if (r.getEnum() != null && !r.getEnum().isEmpty()) {
-            List<Object> _enum = r.getEnum();
+        if (referencedSchema.getEnum() != null && !referencedSchema.getEnum().isEmpty()) {
+            List<Object> _enum = referencedSchema.getEnum();
 
             Map<String, Object> allowableValues = new HashMap<String, Object>();
             allowableValues.put("values", _enum);
@@ -2053,6 +2055,10 @@ public class DefaultCodegen implements CodegenConfig {
             }
         }
 
+        if (referencedSchema.getNullable() != null) {
+            property.isNullable = referencedSchema.getNullable();
+        }
+
         property.dataType = getTypeDeclaration(p);
         property.dataFormat = p.getFormat();
         property.baseType = getSchemaType(p);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java
index cba9be057fbe6b95c435531be842d5ae66820249..63d937e2d1bc767fdc7e43b0eed65445a9730e55 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java
@@ -531,6 +531,7 @@ public class InlineModelResolver {
         model.setName(object.getName());
         model.setXml(xml);
         model.setRequired(object.getRequired());
+        model.setNullable(object.getNullable());
         if (properties != null) {
             flattenProperties(properties, path);
             model.setProperties(properties);
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index 348c41b1f83053be30b27f2537d4b9eb1e22a4ac..3a7825c1d83407d8bfceddcec4e9ac5cbe6a2c10 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -551,6 +551,18 @@ public class DefaultCodegenTest {
         Assert.assertTrue(cr.hasHeaders);
     }
 
+    @Test
+    public void testNullableProperty() {
+        final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/examples.yaml");
+        new InlineModelResolver().flatten(openAPI);
+        final DefaultCodegen codegen = new DefaultCodegen();
+        codegen.setOpenAPI(openAPI);
+
+        CodegenProperty property = codegen.fromProperty("address", (Schema) openAPI.getComponents().getSchemas().get("User").getProperties().get("address"));
+
+        Assert.assertTrue(property.isNullable);
+    }
+
     private void verifyPersonDiscriminator(CodegenDiscriminator discriminator) {
         CodegenDiscriminator test = new CodegenDiscriminator();
         test.setPropertyName("DollarUnderscoretype");
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java
index 4eb8c29c3b7ca81ae4b78d1a882166007de9bd87..92018e3f50cc34c60bc952b05abb993198089a46 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java
@@ -695,4 +695,28 @@ public class InlineModelResolverTest {
         assertTrue(ModelUtils.getReferencedSchema(openAPI, schema.getItems()) instanceof StringSchema);
         assertNull(ModelUtils.getReferencedSchema(openAPI, schema.getItems()).getExample());
     }
+
+    @Test
+    public void nullable() {
+        OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/inline_model_resolver.yaml");
+        new InlineModelResolver().flatten(openAPI);
+
+        Schema nullablePropertyReference = (Schema) openAPI.getComponents().getSchemas().get("InlinePropertyIsNullable").getProperties().get("nullable_property");
+        Schema nullablePropertySchema = ModelUtils.getReferencedSchema(openAPI, nullablePropertyReference);
+        assertTrue(nullablePropertySchema.getNullable());
+
+
+        Schema nullableRequestBodyReference = (Schema) openAPI
+                .getPaths()
+                .get("/nullable_properties")
+                .getPost()
+                .getRequestBody()
+                .getContent()
+                .get("application/json")
+                .getSchema()
+                .getProperties()
+                .get("nullable_request_body_property");
+        Schema nullableRequestBodySchema = ModelUtils.getReferencedSchema(openAPI, nullableRequestBodyReference);
+        assertTrue(nullableRequestBodySchema.getNullable());
+    }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/test/resources/3_0/examples.yaml b/modules/openapi-generator/src/test/resources/3_0/examples.yaml
index 92f6d7b46de4fcf93f551eed50ece9eac607ade7..30c540919b123f4a8e7b6503efa1c0e444d36b85 100644
--- a/modules/openapi-generator/src/test/resources/3_0/examples.yaml
+++ b/modules/openapi-generator/src/test/resources/3_0/examples.yaml
@@ -107,4 +107,14 @@ paths:
       responses:
         '200':
           description: successful operation
-
+components:
+  schemas:
+    User:
+      type: object
+      properties:
+        address:
+          type: object
+          nullable: true
+          properties:
+            city:
+              type: string
diff --git a/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml b/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml
index 9da6749774ef15c503cb0bf341941195e1f515fb..a6235c7e60ecede1268090b7917a5dac6bf20484 100644
--- a/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml
+++ b/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml
@@ -266,6 +266,24 @@ paths:
                 type: array
                 items:
                   $ref: '#/components/schemas/EmptyExampleOnStringTypeModels'
+  /nullable_properties:
+    post:
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: object
+              properties:
+                nullable_request_body_property:
+                  type: object
+                  nullable: true
+                  properties:
+                    nullable_request_body_property_name:
+                      type: string
+      operationId: arbitraryObjectRequestBodyProperty
+      responses:
+        '200':
+          description: OK
 components:
   schemas:
     Users:
@@ -301,3 +319,12 @@ components:
     EmptyExampleOnStringTypeModels:
       type: string
       example: ''
+    InlinePropertyIsNullable:
+      type: object
+      properties:
+        nullable_property:
+          type: object
+          nullable: true
+          properties:
+            nullable_property_name:
+              type: string