diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java
index b8ec826fd9466aa1291d7c8864bb6cc4cd00dc86..0fff84f1fbe7e2bbdfece6810532d2ccef21497d 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java
@@ -249,6 +249,9 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
         imports.put("JsonObject", "package:built_value/json_object.dart");
         imports.put("Uint8List", "dart:typed_data");
         imports.put("MultipartFile", DIO_IMPORT);
+
+        //reserved words specific to built_value
+        reservedWords.add("update");
     }
 
     private void configureSerializationLibraryJsonSerializable(String srcFolder) {
@@ -264,6 +267,10 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
     }
 
     private void configureDateLibrary(String srcFolder) {
+        languageSpecificPrimitives.add("date");
+        languageSpecificPrimitives.add("Date");
+        languageSpecificPrimitives.add("DateTime");
+        
         switch (dateLibrary) {
             case DATE_LIBRARY_TIME_MACHINE:
                 additionalProperties.put("useDateLibTimeMachine", "true");
@@ -475,6 +482,19 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
         return resultImports;
     }
 
+    @Override
+    public CodegenProperty fromProperty(String name, Schema p, boolean required) {
+        final CodegenProperty property = super.fromProperty(name, p, required);
+        Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p);
+        
+        //Catch types that are models and maps (i.e. additionalProperties: true) and render them the same as a model
+        if (ModelUtils.isModel(referencedSchema) && ModelUtils.isMapSchema(referencedSchema)) {
+            property.isModel = true;
+        }
+        return property;
+    }
+    
+
     static class BuiltValueSerializer {
 
         final boolean isArray;
diff --git a/modules/openapi-generator/src/main/resources/dart/dart-keywords.txt b/modules/openapi-generator/src/main/resources/dart/dart-keywords.txt
index 5e51f8cceff61cd87615ef4e3d3aaa790bd1e085..8a8e4264978399bf9786fb9d29cfd80c6282958e 100644
--- a/modules/openapi-generator/src/main/resources/dart/dart-keywords.txt
+++ b/modules/openapi-generator/src/main/resources/dart/dart-keywords.txt
@@ -66,4 +66,4 @@ var
 void
 while
 with
-yield
\ No newline at end of file
+yield
diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache
index 66fe59788b0f04271d2fdac010df02077e98f2e6..957a4852e4245f9ae3148b7469ed23d255128b4c 100644
--- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache
+++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache
@@ -27,7 +27,7 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde
     @BuiltValueField(wireName: r'{{baseName}}')
     {{>serialization/built_value/variable_type}}{{^isNullable}}{{^required}}?{{/required}}{{/isNullable}} get {{name}};
     {{#allowableValues}}
-    // {{#min}}range from {{{min}}} to {{{max}}}{{/min}}{{^min}}enum {{name}}Enum { {{#values}} {{{.}}}, {{/values}} };{{/min}}
+    // {{#min}}range from {{{min}}} to {{{max}}}{{/min}}{{^min}}enum {{name}}Enum { {{#values}} {{#.}}{{{.}}}{{/.}}{{^.}}null{{/.}}, {{/values}} };{{/min}}
     {{/allowableValues}}
 
 {{/vars}}
diff --git a/pom.xml b/pom.xml
index df0a4a8f97ce072ed5fa59b3ae3485141debfbe4..ba9f41d61074e44183c1689dad05287c81b8a04c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1473,7 +1473,7 @@
         <jackson-threetenbp.version>2.10.0</jackson-threetenbp.version>
         <jackson.version>2.13.1</jackson.version>
         <jacoco.version>0.8.7</jacoco.version>
-        <jmustache.version>1.14</jmustache.version>
+        <jmustache.version>1.15</jmustache.version>
         <junit.version>4.13.2</junit.version>
         <kotlin.version>1.6.10</kotlin.version>
         <maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/FormatTest.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/FormatTest.md
index 83b60545eb616d3d580ab96b2e4664cbbf3682dd..28f76d9739746f25d16206139484a1abf53d81c8 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/FormatTest.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/FormatTest.md
@@ -18,8 +18,8 @@ Name | Type | Description | Notes
 **string** | **String** |  | [optional] 
 **byte** | **String** |  | 
 **binary** | [**MultipartFile**](MultipartFile.md) |  | [optional] 
-**date** | [**DateTime**](DateTime.md) |  | 
-**dateTime** | [**DateTime**](DateTime.md) |  | [optional] 
+**date** | **DateTime** |  | 
+**dateTime** | **DateTime** |  | [optional] 
 **uuid** | **String** |  | [optional] 
 **password** | **String** |  | 
 **patternWithDigits** | **String** | A string that is a 10 digit number. Can have leading zeros. | [optional] 
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/MixedPropertiesAndAdditionalPropertiesClass.md
index 66d0d39c42be76078df10acdcd65bcc6b446b8b7..80e05e0cc3b031013e76507739b7d48b7634c8df 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/MixedPropertiesAndAdditionalPropertiesClass.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -9,7 +9,7 @@ import 'package:openapi/api.dart';
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **uuid** | **String** |  | [optional] 
-**dateTime** | [**DateTime**](DateTime.md) |  | [optional] 
+**dateTime** | **DateTime** |  | [optional] 
 **map** | [**Map&lt;String, Animal&gt;**](Animal.md) |  | [optional] 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/NullableClass.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/NullableClass.md
index 70ac1091d4171ecbcf59ed153b043aa9222c1f56..f08b18da7461d644dd4caa59ace67c5d6d860753 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/NullableClass.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/NullableClass.md
@@ -12,8 +12,8 @@ Name | Type | Description | Notes
 **numberProp** | **num** |  | [optional] 
 **booleanProp** | **bool** |  | [optional] 
 **stringProp** | **String** |  | [optional] 
-**dateProp** | [**DateTime**](DateTime.md) |  | [optional] 
-**datetimeProp** | [**DateTime**](DateTime.md) |  | [optional] 
+**dateProp** | **DateTime** |  | [optional] 
+**datetimeProp** | **DateTime** |  | [optional] 
 **arrayNullableProp** | **List&lt;Object&gt;** |  | [optional] 
 **arrayAndItemsNullableProp** | **List&lt;Object&gt;** |  | [optional] 
 **arrayItemsNullable** | **List&lt;Object&gt;** |  | [optional] 
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/Order.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/Order.md
index bde5ffe51a2c19f537ca596c2e737ea9f610f3ff..3de4cdabdcc98953eb4a9bf41180313c004edd4d 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/Order.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake-json_serializable/doc/Order.md
@@ -11,7 +11,7 @@ Name | Type | Description | Notes
 **id** | **int** |  | [optional] 
 **petId** | **int** |  | [optional] 
 **quantity** | **int** |  | [optional] 
-**shipDate** | [**DateTime**](DateTime.md) |  | [optional] 
+**shipDate** | **DateTime** |  | [optional] 
 **status** | **String** | Order Status | [optional] 
 **complete** | **bool** |  | [optional] [default to false]
 
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FormatTest.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FormatTest.md
index f811264ca2bac7e7a070a7246f2f28caf615a1ee..227b46faa634ed381362160dbb1d6b03de0d5daa 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FormatTest.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FormatTest.md
@@ -18,8 +18,8 @@ Name | Type | Description | Notes
 **string** | **String** |  | [optional] 
 **byte** | **String** |  | 
 **binary** | [**Uint8List**](Uint8List.md) |  | [optional] 
-**date** | [**Date**](Date.md) |  | 
-**dateTime** | [**DateTime**](DateTime.md) |  | [optional] 
+**date** | **Date** |  | 
+**dateTime** | **DateTime** |  | [optional] 
 **uuid** | **String** |  | [optional] 
 **password** | **String** |  | 
 **patternWithDigits** | **String** | A string that is a 10 digit number. Can have leading zeros. | [optional] 
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md
index b1a4c4ccc4011b22aa55f7e1ff762e3b3958e036..f7d7fffcde1638583baad512d80638a622a8979b 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -9,7 +9,7 @@ import 'package:openapi/api.dart';
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **uuid** | **String** |  | [optional] 
-**dateTime** | [**DateTime**](DateTime.md) |  | [optional] 
+**dateTime** | **DateTime** |  | [optional] 
 **map** | [**BuiltMap&lt;String, Animal&gt;**](Animal.md) |  | [optional] 
 
 [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/NullableClass.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/NullableClass.md
index 4ce8d5e1757605dc804e15baee66ca354f7e2809..848e3382e606d3af0a1c10e623331375c5abf280 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/NullableClass.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/NullableClass.md
@@ -12,8 +12,8 @@ Name | Type | Description | Notes
 **numberProp** | **num** |  | [optional] 
 **booleanProp** | **bool** |  | [optional] 
 **stringProp** | **String** |  | [optional] 
-**dateProp** | [**Date**](Date.md) |  | [optional] 
-**datetimeProp** | [**DateTime**](DateTime.md) |  | [optional] 
+**dateProp** | **Date** |  | [optional] 
+**datetimeProp** | **DateTime** |  | [optional] 
 **arrayNullableProp** | [**BuiltList&lt;JsonObject&gt;**](JsonObject.md) |  | [optional] 
 **arrayAndItemsNullableProp** | [**BuiltList&lt;JsonObject&gt;**](JsonObject.md) |  | [optional] 
 **arrayItemsNullable** | [**BuiltList&lt;JsonObject&gt;**](JsonObject.md) |  | [optional] 
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/Order.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/Order.md
index bde5ffe51a2c19f537ca596c2e737ea9f610f3ff..3de4cdabdcc98953eb4a9bf41180313c004edd4d 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/Order.md
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/Order.md
@@ -11,7 +11,7 @@ Name | Type | Description | Notes
 **id** | **int** |  | [optional] 
 **petId** | **int** |  | [optional] 
 **quantity** | **int** |  | [optional] 
-**shipDate** | [**DateTime**](DateTime.md) |  | [optional] 
+**shipDate** | **DateTime** |  | [optional] 
 **status** | **String** | Order Status | [optional] 
 **complete** | **bool** |  | [optional] [default to false]
 
diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/src/api/fake_api.dart
index 37506ff1cfe621f4185268d6674b614e321ce0fc..52036d28621bfa7deb929c1fa3f15ce8b1b49f96 100644
--- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/src/api/fake_api.dart
+++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/src/api/fake_api.dart
@@ -10,7 +10,6 @@ import 'package:dio/dio.dart';
 import 'dart:typed_data';
 import 'package:built_collection/built_collection.dart';
 import 'package:openapi/src/api_util.dart';
-import 'package:openapi/src/model/date.dart';
 import 'package:openapi/src/model/file_schema_test_class.dart';
 import 'package:openapi/src/model/health_check_result.dart';
 import 'package:openapi/src/model/model_client.dart';