diff --git a/bin/kotlin-client-petstore.sh b/bin/kotlin-client-petstore.sh
index cad4be6995e048565d0dd717c404cb0c6ccda1e6..409911eb113710068669ddc1c02df120d968ffaa 100755
--- a/bin/kotlin-client-petstore.sh
+++ b/bin/kotlin-client-petstore.sh
@@ -27,6 +27,6 @@ fi
 
 # if you've executed sbt assembly previously it will use that instead.
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-client --additional-properties dateLibrary=java8 -o samples/client/petstore/kotlin $@"
+ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-client --additional-properties dateLibrary=java8,serializableModel=true -o samples/client/petstore/kotlin $@"
 
 java ${JAVA_OPTS} -jar ${executable} ${ags}
diff --git a/bin/kotlin-client-string.sh b/bin/kotlin-client-string.sh
index 410ddbab39997180adcd8d92e670c5f062d56b97..57fae03ab11a9909ac4d787126fc3fb2b76ce86a 100755
--- a/bin/kotlin-client-string.sh
+++ b/bin/kotlin-client-string.sh
@@ -27,7 +27,7 @@ fi
 
 # if you've executed sbt assembly previously it will use that instead.
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-string --additional-properties dateLibrary=string -o samples/client/petstore/kotlin-string $@"
+ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-string --additional-properties dateLibrary=string,serializableModel=true -o samples/client/petstore/kotlin-string $@"
 
 java ${JAVA_OPTS} -jar ${executable} ${ags}
 
diff --git a/bin/kotlin-server-petstore.sh b/bin/kotlin-server-petstore.sh
index dbdf48b2bbd3ab626e80580b9f273166b0080294..755a560a1f1dffd18800d42ea178396bdd4ace22 100755
--- a/bin/kotlin-server-petstore.sh
+++ b/bin/kotlin-server-petstore.sh
@@ -27,7 +27,7 @@ fi
 
 # if you've executed sbt assembly previously it will use that instead.
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-server -g kotlin-server --library=ktor -o samples/server/petstore/kotlin-server/ktor --additional-properties hideGenerationTimestamp=true $@"
+ags="generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-server -g kotlin-server --library=ktor -o samples/server/petstore/kotlin-server/ktor --additional-properties hideGenerationTimestamp=true,serializableModel=true $@"
 
 java ${JAVA_OPTS} -jar ${executable} ${ags}
 
diff --git a/bin/kotlin-springboot-petstore-server.sh b/bin/kotlin-springboot-petstore-server.sh
index 45179767ece5612cc059f7865587dea967fab9ed..73b56bcf8fa51cf42f72810971920e5456f2f05a 100755
--- a/bin/kotlin-springboot-petstore-server.sh
+++ b/bin/kotlin-springboot-petstore-server.sh
@@ -26,7 +26,7 @@ then
 fi
 
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-spring -g kotlin-spring -o samples/server/petstore/kotlin-springboot --additional-properties=library=spring-boot,beanValidations=true,swaggerAnnotations=true,serviceImplementation=true"
+ags="$@ generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-spring -g kotlin-spring -o samples/server/petstore/kotlin-springboot --additional-properties=library=spring-boot,beanValidations=true,swaggerAnnotations=true,serviceImplementation=true,serializableModel=true"
 
 echo "Cleaning previously generated files if any from samples/server/petstore/kotlin-springboot"
 rm -rf samples/server/petstore/kotlin-springboot
diff --git a/bin/openapi3/kotlin-client-petstore.sh b/bin/openapi3/kotlin-client-petstore.sh
index f426dba223b86fa46d4371e42465b48a9bba1be6..d03522768005ed174c485527f44059d3b9a6d560 100755
--- a/bin/openapi3/kotlin-client-petstore.sh
+++ b/bin/openapi3/kotlin-client-petstore.sh
@@ -26,7 +26,7 @@ then
 fi
 
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="generate -i modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml -t modules/openapi-generator/src/main/resources/kotlin-client -g kotlin --artifact-id kotlin-petstore-client --additional-properties dateLibrary=java8 -o samples/openapi3/client/petstore/kotlin $@"
+ags="generate -i modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml -t modules/openapi-generator/src/main/resources/kotlin-client -g kotlin --artifact-id kotlin-petstore-client --additional-properties dateLibrary=java8,serializableModel=true -o samples/openapi3/client/petstore/kotlin $@"
 
 echo "Cleaning previously generated files if any from samples/openapi3/client/petstore/kotlin"
 rm -rf samples/openapi3/client/petstore/kotlin
diff --git a/bin/openapi3/kotlin-springboot-petstore-server.sh b/bin/openapi3/kotlin-springboot-petstore-server.sh
index b1320abdb0a30b731d9c46722dc383b9ae0d1496..8779e1a04122d1e1a7f715f38b2c294dae2dbce3 100755
--- a/bin/openapi3/kotlin-springboot-petstore-server.sh
+++ b/bin/openapi3/kotlin-springboot-petstore-server.sh
@@ -26,7 +26,7 @@ then
 fi
 
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="$@ generate -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-spring -g kotlin-spring -o samples/openapi3/server/petstore/kotlin-springboot --additional-properties=library=spring-boot,beanValidations=true,swaggerAnnotations=true,serviceImplementation=true"
+ags="$@ generate -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -t modules/openapi-generator/src/main/resources/kotlin-spring -g kotlin-spring -o samples/openapi3/server/petstore/kotlin-springboot --additional-properties=library=spring-boot,beanValidations=true,swaggerAnnotations=true,serviceImplementation=true,serializableModel=true"
 
 echo "Cleaning previously generated files if any from samples/server/openapi3/petstore/kotlin-springboot"
 rm -rf samples/server/openapi3/petstore/kotlin-springboot
diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md
index 4c18a6165c9db4ab4fda16c2f0e6ec39f9885cf1..54e62dcf20875315929b1455d6a25c0fc1fedc42 100644
--- a/docs/generators/kotlin-server.md
+++ b/docs/generators/kotlin-server.md
@@ -16,6 +16,7 @@ sidebar_label: kotlin-server
 |enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |camelCase|
 |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
 |parcelizeModels|toggle "@Parcelize" for generated models| |null|
+|serializableModel|boolean - toggle "implements Serializable" for generated models| |null|
 |library|library template (sub-template)|<dl><dt>**ktor**</dt><dd>ktor framework</dd><dl>|ktor|
 |featureAutoHead|Automatically provide responses to HEAD requests for existing routes that have the GET verb defined.| |true|
 |featureConditionalHeaders|Avoid sending content if client already has same content, by checking ETag or LastModified properties.| |false|
diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md
index 9b690b12da5a08f3d19940e0553cea620d0668e2..ca5e09b8fbcf936d70f5ce666fa30b6641c0ecbb 100644
--- a/docs/generators/kotlin-spring.md
+++ b/docs/generators/kotlin-spring.md
@@ -16,6 +16,7 @@ sidebar_label: kotlin-spring
 |enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |camelCase|
 |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
 |parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
+|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
 |title|server title name or client service name| |OpenAPI Kotlin Spring|
 |basePackage|base package (invokerPackage) for generated code| |org.openapitools|
 |serverPort|configuration the port in which the sever is to run on| |8080|
diff --git a/docs/generators/kotlin-vertx.md b/docs/generators/kotlin-vertx.md
index 9677fe62392663ebbce3b88fd5d2bf9bbf3fe354..03e2d0dd1fc832151965fe60176e249f1b1ce11b 100644
--- a/docs/generators/kotlin-vertx.md
+++ b/docs/generators/kotlin-vertx.md
@@ -16,3 +16,4 @@ sidebar_label: kotlin-vertx
 |enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |camelCase|
 |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
 |parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
+|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md
index 264842d4bb20948ab918c5af9b106001bde141fc..719ed37accb7d4206e345350e1df1a6f5f1e98b1 100644
--- a/docs/generators/kotlin.md
+++ b/docs/generators/kotlin.md
@@ -16,6 +16,7 @@ sidebar_label: kotlin
 |enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |camelCase|
 |serializationLibrary|What serialization library to use: 'moshi' (default), or 'gson'| |moshi|
 |parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
+|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |null|
 |dateLibrary|Option. Date library to use|<dl><dt>**string**</dt><dd>String</dd><dt>**java8**</dt><dd>Java 8 native JSR310 (jvm only)</dd><dt>**threetenbp**</dt><dd>Threetenbp (jvm only)</dd><dl>|java8|
 |collectionType|Option. Collection type to use|<dl><dt>**array**</dt><dd>kotlin.Array</dd><dt>**list**</dt><dd>kotlin.collections.List</dd><dl>|array|
 |library|Library template (sub-template) to use|<dl><dt>**jvm**</dt><dd>Platform: Java Virtual Machine. HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.8.1.</dd><dt>**multiplatform**</dt><dd>Platform: Kotlin multiplatform. HTTP client: Ktor 1.2.4. JSON processing: Kotlinx Serialization: 0.12.0.</dd><dl>|jvm|
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
index 5351c1fe2d40d7d8e2dcfb17f39a0e3dbe0a93d8..58517f146d0b1b91b01194e15b2f24b784987043 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
@@ -54,6 +54,8 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
     protected String modelDocPath = "docs/";
     protected boolean parcelizeModels = false;
 
+    protected boolean serializableModel = false;
+
     protected CodegenConstants.ENUM_PROPERTY_NAMING_TYPE enumPropertyNaming = CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.camelCase;
     protected SERIALIZATION_LIBRARY_TYPE serializationLibrary = SERIALIZATION_LIBRARY_TYPE.moshi;
 
@@ -215,6 +217,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         cliOptions.add(serializationLibraryOpt.defaultValue(serializationLibrary.name()));
 
         cliOptions.add(new CliOption(CodegenConstants.PARCELIZE_MODELS, CodegenConstants.PARCELIZE_MODELS_DESC));
+        cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC));
     }
 
     @Override
@@ -411,6 +414,12 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
             LOGGER.warn(CodegenConstants.INVOKER_PACKAGE + " with " + this.getName() + " generator is ignored. Use " + CodegenConstants.PACKAGE_NAME + ".");
         }
 
+        if (additionalProperties.containsKey(CodegenConstants.SERIALIZABLE_MODEL)) {
+            this.setSerializableModel(Boolean.valueOf((String) additionalProperties.get(CodegenConstants.SERIALIZABLE_MODEL)));
+        } else {
+            additionalProperties.put(CodegenConstants.SERIALIZABLE_MODEL, serializableModel);
+        }
+
         if (additionalProperties.containsKey(CodegenConstants.PARCELIZE_MODELS)) {
             this.setParcelizeModels(Boolean.valueOf((String) additionalProperties.get(CodegenConstants.PARCELIZE_MODELS)));
             LOGGER.info(CodegenConstants.PARCELIZE_MODELS + " depends on the android framework and " +
@@ -468,6 +477,13 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         this.parcelizeModels = parcelizeModels;
     }
 
+    public boolean isSerializableModel() {
+        return serializableModel;
+    }
+
+    public void setSerializableModel(boolean serializableModel) {
+        this.serializableModel = serializableModel;
+    }
     /**
      * Return the sanitized variable name for enum
      *
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
index 0cece22bb0b7a4bb931643addd6483100fa6943f..c633d11ea8c97f91f55d42a3473ff9935e17a07c 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
@@ -15,6 +15,9 @@ import kotlinx.android.parcel.Parcelize
 import kotlinx.serialization.*
 import kotlinx.serialization.internal.CommonEnumSerializer
 {{/multiplatform}}
+{{#serializableModel}}
+import java.io.Serializable
+{{/serializableModel}}
 /**
  * {{{description}}}
 {{#vars}}
@@ -31,7 +34,9 @@ data class {{classname}} (
 {{/-last}}{{/requiredVars}}{{#hasRequired}}{{#hasOptional}},
 {{/hasOptional}}{{/hasRequired}}{{#optionalVars}}{{>data_class_opt_var}}{{^-last}},
 {{/-last}}{{/optionalVars}}
-){{#parcelizeModels}} : Parcelable{{/parcelizeModels}}
+) {{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}
+{{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}
+{{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}
 {{#hasEnums}}
 {
 {{#vars}}{{#isEnum}}
diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache
index feb6a0b317e629eca8a7503b83d7634a80db82ae..fe88e433f20d109800f6da5b1f6ef023f85e6326 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache
@@ -3,6 +3,9 @@ import android.os.Parcelable
 import kotlinx.android.parcel.Parcelize
 
 {{/parcelizeModels}}
+{{#serializableModel}}
+import java.io.Serializable
+{{/serializableModel}}
 /**
  * {{{description}}}
 {{#vars}}
@@ -18,7 +21,10 @@ data class {{classname}} (
 {{/-last}}{{/requiredVars}}{{#hasRequired}}{{#hasOptional}},
 {{/hasOptional}}{{/hasRequired}}{{#optionalVars}}{{>data_class_opt_var}}{{^-last}},
 {{/-last}}{{/optionalVars}}
-){{#parcelizeModels}} : Parcelable{{/parcelizeModels}} {
+) {{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}
+{{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}
+{{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}
+{
 {{#hasEnums}}{{#vars}}{{#isEnum}}
     /**
     * {{{description}}}
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt
index 51ab6ed93980abfab783dc69f866865bb324c4bc..3f05f17779e788179a0f182644ce3b76f241e4f5 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -25,5 +25,7 @@ data class ApiResponse (
     @SerialName(value = "code") val code: kotlin.Int? = null,
     @SerialName(value = "type") val type: kotlin.String? = null,
     @SerialName(value = "message") val message: kotlin.String? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
index 96432c658ada3e8440713eb17fa31f19435b4a98..eff7d12a4abd617eac069dde4fd7b3316094535b 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
@@ -23,5 +23,7 @@ import kotlinx.serialization.internal.CommonEnumSerializer
 data class Category (
     @SerialName(value = "id") val id: kotlin.Long? = null,
     @SerialName(value = "name") val name: kotlin.String? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
index e949395ce4ef06df4cbbb6a427f3ed12572b21cb..76b9cf068ed924332a36f86657da7635c2e8059d 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
@@ -32,7 +32,9 @@ data class Order (
     /* Order Status */
     @SerialName(value = "status") val status: Order.Status? = null,
     @SerialName(value = "complete") val complete: kotlin.Boolean? = null
-)
+) 
+
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
index dc2f8b0b0ef3f24a441a23744592c71fccc5f73b..145683fe5784bc3a73c1c561c4333d0c6b92363e 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
@@ -34,7 +34,9 @@ data class Pet (
     @SerialName(value = "tags") val tags: kotlin.Array<Tag>? = null,
     /* pet status in the store */
     @SerialName(value = "status") val status: Pet.Status? = null
-)
+) 
+
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
index b21e51bf8d3baee6614b9ebca144f14d5fdedb1e..6c5ce642e78ee9b126075f0f34d867799d2d187e 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
@@ -23,5 +23,7 @@ import kotlinx.serialization.internal.CommonEnumSerializer
 data class Tag (
     @SerialName(value = "id") val id: kotlin.Long? = null,
     @SerialName(value = "name") val name: kotlin.String? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
index 7d52e737d49ed579a63dc5174f94aa6c494edb56..dd092dfd70742e1782cc891b8592962ebe44d400 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
@@ -36,5 +36,7 @@ data class User (
     @SerialName(value = "phone") val phone: kotlin.String? = null,
     /* User Status */
     @SerialName(value = "userStatus") val userStatus: kotlin.Int? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
index ada15fee7a1bb856784e5f5f4e55c76e2645110c..6d5c231ccc843dfd3cb92b9f6a5b67f15da72849 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Describes the result of uploading an image resource
  * @param code 
@@ -27,5 +28,7 @@ data class ApiResponse (
     val type: kotlin.String? = null,
     @Json(name = "message")
     val message: kotlin.String? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt
index 426a0e5159280c6f3a53a4deb352913dc714ba4a..1fe92af826c1f72b49e2c484caa887fbd8eb1034 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A category for a pet
  * @param id 
@@ -24,5 +25,7 @@ data class Category (
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
index 38be465c021ba8be348ca88cfdf5bd656bc72891..81cc2b0940b09cbe7e323a40b33cc7fdec8d1a78 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * An order for a pets from the pet store
  * @param id 
@@ -37,7 +38,9 @@ data class Order (
     val status: Order.Status? = null,
     @Json(name = "complete")
     val complete: kotlin.Boolean? = null
-)
+) 
+: Serializable 
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
index d870b69e5e7f8ff121fd5e76ec5cc03eed5ec73f..3b4dfc22abdc8e214751604914470f988f524861 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -15,6 +15,7 @@ import org.openapitools.client.models.Category
 import org.openapitools.client.models.Tag
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A pet for sale in the pet store
  * @param id 
@@ -39,7 +40,9 @@ data class Pet (
     /* pet status in the store */
     @Json(name = "status")
     val status: Pet.Status? = null
-)
+) 
+: Serializable 
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
index f9ef87e13fbf906d8f4a3eb88eebedfb6b9b73a9..1d97954c460b0de5bb2ad7a16e044b8bc7757416 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A tag for a pet
  * @param id 
@@ -24,5 +25,7 @@ data class Tag (
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt
index dfd63806da941224d8d591d4b1e49390e5468797..df835a5d9685adb71a25a8d9ffc0eb90f650a22b 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A User who is purchasing from the pet store
  * @param id 
@@ -43,5 +44,7 @@ data class User (
     /* User Status */
     @Json(name = "userStatus")
     val userStatus: kotlin.Int? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
index ada15fee7a1bb856784e5f5f4e55c76e2645110c..47766821f186afe788022cd0424a0294a49ada36 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -27,5 +27,7 @@ data class ApiResponse (
     val type: kotlin.String? = null,
     @Json(name = "message")
     val message: kotlin.String? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
index 426a0e5159280c6f3a53a4deb352913dc714ba4a..edb16cc1270a499dc1961bcb0654e0f1f0379575 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -24,5 +24,7 @@ data class Category (
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
index abf5219de339c50b73dda543f75cd2f5296c2689..af6dcb45604f8bb28f9f46b10a3f4cc2c368b057 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -37,7 +37,9 @@ data class Order (
     val status: Order.Status? = null,
     @Json(name = "complete")
     val complete: kotlin.Boolean? = null
-)
+) 
+
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
index d870b69e5e7f8ff121fd5e76ec5cc03eed5ec73f..8015b6dab7202b06dd7473ab57ff3eeef75c262b 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -39,7 +39,9 @@ data class Pet (
     /* pet status in the store */
     @Json(name = "status")
     val status: Pet.Status? = null
-)
+) 
+
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
index f9ef87e13fbf906d8f4a3eb88eebedfb6b9b73a9..05dc7c9afefe9227a4c67a4ac7b177d06652c9ac 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -24,5 +24,7 @@ data class Tag (
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
index dfd63806da941224d8d591d4b1e49390e5468797..537b01d3c2783e9678fbd7c5617caa7ec966d6fe 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -43,5 +43,7 @@ data class User (
     /* User Status */
     @Json(name = "userStatus")
     val userStatus: kotlin.Int? = null
-)
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
index ada15fee7a1bb856784e5f5f4e55c76e2645110c..6d5c231ccc843dfd3cb92b9f6a5b67f15da72849 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Describes the result of uploading an image resource
  * @param code 
@@ -27,5 +28,7 @@ data class ApiResponse (
     val type: kotlin.String? = null,
     @Json(name = "message")
     val message: kotlin.String? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
index 426a0e5159280c6f3a53a4deb352913dc714ba4a..1fe92af826c1f72b49e2c484caa887fbd8eb1034 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A category for a pet
  * @param id 
@@ -24,5 +25,7 @@ data class Category (
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
index 2e9074a650abc2f4e6ab4bd9d36d067c9eae79e3..a5478a6162612eed33e6d01787456c5fd6aba995 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * An order for a pets from the pet store
  * @param id 
@@ -37,7 +38,9 @@ data class Order (
     val status: Order.Status? = null,
     @Json(name = "complete")
     val complete: kotlin.Boolean? = null
-)
+) 
+: Serializable 
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
index d870b69e5e7f8ff121fd5e76ec5cc03eed5ec73f..3b4dfc22abdc8e214751604914470f988f524861 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -15,6 +15,7 @@ import org.openapitools.client.models.Category
 import org.openapitools.client.models.Tag
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A pet for sale in the pet store
  * @param id 
@@ -39,7 +40,9 @@ data class Pet (
     /* pet status in the store */
     @Json(name = "status")
     val status: Pet.Status? = null
-)
+) 
+: Serializable 
+
 {
 
     /**
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
index f9ef87e13fbf906d8f4a3eb88eebedfb6b9b73a9..1d97954c460b0de5bb2ad7a16e044b8bc7757416 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A tag for a pet
  * @param id 
@@ -24,5 +25,7 @@ data class Tag (
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
index dfd63806da941224d8d591d4b1e49390e5468797..df835a5d9685adb71a25a8d9ffc0eb90f650a22b 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * A User who is purchasing from the pet store
  * @param id 
@@ -43,5 +44,7 @@ data class User (
     /* User Status */
     @Json(name = "userStatus")
     val userStatus: kotlin.Int? = null
-)
+) 
+: Serializable 
+
 
diff --git a/samples/openapi3/client/petstore/kotlin/.openapi-generator/VERSION b/samples/openapi3/client/petstore/kotlin/.openapi-generator/VERSION
index 2f81801b7943ad0eb46d73e72a98a3bc2240ad99..d99e7162d01f35766e7a53f78b6acb6f7d84f1c3 100644
--- a/samples/openapi3/client/petstore/kotlin/.openapi-generator/VERSION
+++ b/samples/openapi3/client/petstore/kotlin/.openapi-generator/VERSION
@@ -1 +1 @@
-4.1.1-SNAPSHOT
\ No newline at end of file
+5.0.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin/README.md b/samples/openapi3/client/petstore/kotlin/README.md
index cf1793ec2f6fa513881f45aeb0bc985248c83425..3738c4b9c91f0f8a2d103c70202de12fdbdeb002 100644
--- a/samples/openapi3/client/petstore/kotlin/README.md
+++ b/samples/openapi3/client/petstore/kotlin/README.md
@@ -2,8 +2,8 @@
 
 ## Requires
 
-* Kotlin 1.1.2
-* Gradle 3.3
+* Kotlin 1.3.41
+* Gradle 4.9
 
 ## Build
 
@@ -50,6 +50,7 @@ Class | Method | HTTP request | Description
 *FakeApi* | [**testGroupParameters**](docs/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional)
 *FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
 *FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data
+*FakeApi* | [**testQueryParameterCollectionFormat**](docs/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | 
 *FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case
 *PetApi* | [**addPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store
 *PetApi* | [**deletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet
diff --git a/samples/openapi3/client/petstore/kotlin/build.gradle b/samples/openapi3/client/petstore/kotlin/build.gradle
index 8668dab3a7e6294ddca57b4ee62595c5afda9555..c09f7912cfe17cfc18dc55651ab6c29de963b95e 100644
--- a/samples/openapi3/client/petstore/kotlin/build.gradle
+++ b/samples/openapi3/client/petstore/kotlin/build.gradle
@@ -1,13 +1,13 @@
 group 'org.openapitools'
 version '1.0.0'
 
-task wrapper(type: Wrapper) {
-    gradleVersion = '3.3'
+wrapper {
+    gradleVersion = '4.9'
     distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
 }
 
 buildscript {
-    ext.kotlin_version = '1.1.2'
+    ext.kotlin_version = '1.3.41'
 
     repositories {
         mavenCentral()
@@ -23,11 +23,15 @@ repositories {
     mavenCentral()
 }
 
+test {
+    useJUnitPlatform()
+}
+
 dependencies {
-    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
-    compile "com.squareup.moshi:moshi-kotlin:1.5.0"
-    compile "com.squareup.moshi:moshi-adapters:1.5.0"
-    compile "com.squareup.okhttp3:okhttp:3.8.0"
-    compile "org.threeten:threetenbp:1.3.6"
-    testCompile "io.kotlintest:kotlintest:2.0.2"
+    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+    compile "com.squareup.moshi:moshi-kotlin:1.8.0"
+    compile "com.squareup.moshi:moshi-adapters:1.8.0"
+    compile "com.squareup.okhttp3:okhttp:4.0.1"
+    testImplementation "io.kotlintest:kotlintest-runner-junit5:3.1.0"
 }
diff --git a/samples/openapi3/client/petstore/kotlin/settings.gradle b/samples/openapi3/client/petstore/kotlin/settings.gradle
index 17e020387e21bb4025edc13e8ce40a6e582cc890..7540d01de36cd57f03cc45082cff819347bbb1e1 100644
--- a/samples/openapi3/client/petstore/kotlin/settings.gradle
+++ b/samples/openapi3/client/petstore/kotlin/settings.gradle
@@ -1 +1,2 @@
+
 rootProject.name = 'kotlin-petstore-client'
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
index c2c3f1f0eaeac99b455fcd90d7ae1c6fae7659ae..f97cb88d2338e1e1e6fe293d8c4056dc7c2e8e3b 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
@@ -12,9 +12,12 @@ fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
 
 val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
 
-fun <T: Any?> toMultiValue(items: List<T>, collectionFormat: String, map: (item: Any?) -> String = defaultMultiValueConverter): List<String> {
+fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
+        = toMultiValue(items.asIterable(), collectionFormat, map)
+
+fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
     return when(collectionFormat) {
         "multi" -> items.map(map)
-        else -> listOf(items.map(map).joinToString(separator = collectionDelimiter(collectionFormat)))
+        else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
     }
 }
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/AdditionalPropertiesClass.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/AdditionalPropertiesClass.kt
index 7d5ee7a1bb7f7fe5e2cb4ed1b238c520477c1e1f..4367965e2dcad57e3de605266dfdc89e5499bff6 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/AdditionalPropertiesClass.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/AdditionalPropertiesClass.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param mapProperty 
  * @param mapOfMapProperty 
  */
+
 data class AdditionalPropertiesClass (
     @Json(name = "map_property")
     val mapProperty: kotlin.collections.Map<kotlin.String, kotlin.String>? = null,
     @Json(name = "map_of_map_property")
     val mapOfMapProperty: kotlin.collections.Map<kotlin.String, kotlin.collections.Map<kotlin.String, kotlin.String>>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Animal.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Animal.kt
index 5f4435f56fa4ae9855a6ba00328b16563c84d976..ba590f165b8df20b766e781fbd3f0f4702217f0a 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Animal.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Animal.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param className 
  * @param color 
  */
+
 data class Animal (
     @Json(name = "className")
     val className: kotlin.String,
     @Json(name = "color")
     val color: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
index 0fe4589a5f4f277681f42e5f14a752cd5a5704b0..22773e65057f7cb818c7494a110480d3445e4609 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -13,12 +13,14 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param code 
  * @param type 
  * @param message 
  */
+
 data class ApiResponse (
     @Json(name = "code")
     val code: kotlin.Int? = null,
@@ -26,6 +28,7 @@ data class ApiResponse (
     val type: kotlin.String? = null,
     @Json(name = "message")
     val message: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfArrayOfNumberOnly.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfArrayOfNumberOnly.kt
index 7ade7d8cff50296e345ee4446104cfeff0473ae3..5c9048466e04948e91317936f65dec6ea815a8da 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfArrayOfNumberOnly.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfArrayOfNumberOnly.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param arrayArrayNumber 
  */
+
 data class ArrayOfArrayOfNumberOnly (
     @Json(name = "ArrayArrayNumber")
     val arrayArrayNumber: kotlin.Array<kotlin.Array<java.math.BigDecimal>>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfNumberOnly.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfNumberOnly.kt
index 263146cfd9cf97bda5e5a0ac3e4223b1837c594d..214ef4b0cfe3416ed57d40f88e4e0c951a076174 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfNumberOnly.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayOfNumberOnly.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param arrayNumber 
  */
+
 data class ArrayOfNumberOnly (
     @Json(name = "ArrayNumber")
     val arrayNumber: kotlin.Array<java.math.BigDecimal>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayTest.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayTest.kt
index a430c055932569b455f683260fa1d0e098d602b0..d406e97bf71f8ac091ee349fc99c1f4489540677 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayTest.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ArrayTest.kt
@@ -14,12 +14,14 @@ package org.openapitools.client.models
 import org.openapitools.client.models.ReadOnlyFirst
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param arrayOfString 
  * @param arrayArrayOfInteger 
  * @param arrayArrayOfModel 
  */
+
 data class ArrayTest (
     @Json(name = "array_of_string")
     val arrayOfString: kotlin.Array<kotlin.String>? = null,
@@ -27,6 +29,7 @@ data class ArrayTest (
     val arrayArrayOfInteger: kotlin.Array<kotlin.Array<kotlin.Long>>? = null,
     @Json(name = "array_array_of_model")
     val arrayArrayOfModel: kotlin.Array<kotlin.Array<ReadOnlyFirst>>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Capitalization.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Capitalization.kt
index 72b27a545076d282285439649f252f007d7b6fd3..c9153d08cc24a8573402c7ae281d9f7c861cb518 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Capitalization.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Capitalization.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param smallCamel 
@@ -22,6 +23,7 @@ import com.squareup.moshi.Json
  * @param scAETHFlowPoints 
  * @param ATT_NAME Name of the pet 
  */
+
 data class Capitalization (
     @Json(name = "smallCamel")
     val smallCamel: kotlin.String? = null,
@@ -36,6 +38,7 @@ data class Capitalization (
     /* Name of the pet  */
     @Json(name = "ATT_NAME")
     val ATT_NAME: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Cat.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Cat.kt
index 1ce9e6ef431578405be5dd8476e83191898a26fa..05c1647fb799b8fa860675b339939e1c198355df 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Cat.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Cat.kt
@@ -15,10 +15,12 @@ import org.openapitools.client.models.Animal
 import org.openapitools.client.models.CatAllOf
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param declawed 
  */
+
 data class Cat (
     @Json(name = "className")
     val className: kotlin.String,
@@ -26,6 +28,7 @@ data class Cat (
     val declawed: kotlin.Boolean? = null,
     @Json(name = "color")
     val color: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/CatAllOf.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/CatAllOf.kt
index ec9862cd175786c1c62efce903274e5df7ee3c2e..c4cb55cb62ca0b63a7d4a5b6a9629173e0a6d43f 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/CatAllOf.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/CatAllOf.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param declawed 
  */
+
 data class CatAllOf (
     @Json(name = "declawed")
     val declawed: kotlin.Boolean? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
index 059231f463c0bd25154ddd283299b5d5b97fae70..f3280e75d4c4a50725c4846221d1d485012bf36b 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param id 
  * @param name 
  */
+
 data class Category (
     @Json(name = "name")
     val name: kotlin.String,
     @Json(name = "id")
     val id: kotlin.Long? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ClassModel.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ClassModel.kt
index 06245c42beb4ec6ffdb99948a481539034f9e5aa..7580a49224f87e99f7c873c354dd788a3bde3925 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ClassModel.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ClassModel.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Model for testing model with \"_class\" property
  * @param propertyClass 
  */
+
 data class ClassModel (
     @Json(name = "_class")
     val propertyClass: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Client.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Client.kt
index 4a0cc69a783cdf3b28a70796da5b293878108062..09324d61a0908e741ad6f2b7fe029e3ee83c9167 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Client.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Client.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param client 
  */
+
 data class Client (
     @Json(name = "client")
     val client: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Dog.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Dog.kt
index 19cb002da7e853d116bf5dbd76b783bae5a9e47f..54a2bb6feafa87f7a47bee5ce5c59cfdcb374df9 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Dog.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Dog.kt
@@ -15,10 +15,12 @@ import org.openapitools.client.models.Animal
 import org.openapitools.client.models.DogAllOf
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param breed 
  */
+
 data class Dog (
     @Json(name = "className")
     val className: kotlin.String,
@@ -26,6 +28,7 @@ data class Dog (
     val breed: kotlin.String? = null,
     @Json(name = "color")
     val color: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/DogAllOf.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/DogAllOf.kt
index 71b1b71365afc2ecb2138c4d4db988f1bf66a91a..6085540ff7f6ea3e35d757b54abb29c042b5cfda 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/DogAllOf.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/DogAllOf.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param breed 
  */
+
 data class DogAllOf (
     @Json(name = "breed")
     val breed: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumArrays.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumArrays.kt
index 862929784c01c9765d1c20e31d1e59fdb012bd82..79b1a4c1018555202db477cd34139691c82fe569 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumArrays.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumArrays.kt
@@ -13,44 +13,50 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param justSymbol 
  * @param arrayEnum 
  */
+
 data class EnumArrays (
     @Json(name = "just_symbol")
     val justSymbol: EnumArrays.JustSymbol? = null,
     @Json(name = "array_enum")
     val arrayEnum: kotlin.Array<EnumArrays.ArrayEnum>? = null
-)
+) 
+: Serializable 
 
 {
+
     /**
     * 
     * Values: greaterThanEqual,dollar
     */
+    
     enum class JustSymbol(val value: kotlin.String){
     
         @Json(name = ">=") greaterThanEqual(">="),
     
         @Json(name = "$") dollar("$");
     
+
     }
-}
 
-{
     /**
     * 
     * Values: fish,crab
     */
+    
     enum class ArrayEnum(val value: kotlin.String){
     
         @Json(name = "fish") fish("fish"),
     
         @Json(name = "crab") crab("crab");
     
+
     }
-}
 
+}
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumClass.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumClass.kt
index c1d5645936e564d7fd14c00635eefd647d0e409e..db8cf07dd99cfb44a6fa88f79d0ebd4948da8a0f 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumClass.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumClass.kt
@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
 * 
 * Values: abc,minusEfg,leftParenthesisXyzRightParenthesis
 */
+
 enum class EnumClass(val value: kotlin.String){
 
 
@@ -33,5 +34,6 @@ enum class EnumClass(val value: kotlin.String){
     leftParenthesisXyzRightParenthesis("(xyz)");
 
 
+
 }
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumTest.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumTest.kt
index 5c4073650378dda550d04f8ddaa697016f142878..52ea113cc92554bf4f99e8fea142637da6fff830 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumTest.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/EnumTest.kt
@@ -17,6 +17,7 @@ import org.openapitools.client.models.OuterEnumInteger
 import org.openapitools.client.models.OuterEnumIntegerDefaultValue
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param enumString 
@@ -28,6 +29,7 @@ import com.squareup.moshi.Json
  * @param outerEnumDefaultValue 
  * @param outerEnumIntegerDefaultValue 
  */
+
 data class EnumTest (
     @Json(name = "enum_string_required")
     val enumStringRequired: EnumTest.EnumStringRequired,
@@ -45,13 +47,16 @@ data class EnumTest (
     val outerEnumDefaultValue: OuterEnumDefaultValue? = null,
     @Json(name = "outerEnumIntegerDefaultValue")
     val outerEnumIntegerDefaultValue: OuterEnumIntegerDefaultValue? = null
-)
+) 
+: Serializable 
 
 {
+
     /**
     * 
     * Values: uPPER,lower,eMPTY
     */
+    
     enum class EnumString(val value: kotlin.String){
     
         @Json(name = "UPPER") uPPER("UPPER"),
@@ -60,14 +65,14 @@ data class EnumTest (
     
         @Json(name = "") eMPTY("");
     
+
     }
-}
 
-{
     /**
     * 
     * Values: uPPER,lower,eMPTY
     */
+    
     enum class EnumStringRequired(val value: kotlin.String){
     
         @Json(name = "UPPER") uPPER("UPPER"),
@@ -76,35 +81,36 @@ data class EnumTest (
     
         @Json(name = "") eMPTY("");
     
+
     }
-}
 
-{
     /**
     * 
     * Values: _1,minus1
     */
+    
     enum class EnumInteger(val value: kotlin.Int){
     
         @Json(name = 1) _1(1),
     
         @Json(name = -1) minus1(-1);
     
+
     }
-}
 
-{
     /**
     * 
     * Values: _1period1,minus1Period2
     */
+    
     enum class EnumNumber(val value: kotlin.Double){
     
         @Json(name = 1.1) _1period1(1.1),
     
         @Json(name = -1.2) minus1Period2(-1.2);
     
+
     }
-}
 
+}
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FileSchemaTestClass.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FileSchemaTestClass.kt
index 82e56661014b8d3ece8fd66c43e4264183f2fde9..ab39639e0ccd226723fc0f72d7f4802d8ad32685 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FileSchemaTestClass.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FileSchemaTestClass.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param file 
  * @param files 
  */
+
 data class FileSchemaTestClass (
     @Json(name = "file")
     val file: java.io.File? = null,
     @Json(name = "files")
     val files: kotlin.Array<java.io.File>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Foo.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Foo.kt
index 4ac59867244b9e1d5e5626a38db249aaff484972..0dd32c21afb71de5d8775e1e9f7c3cf97c0a0600 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Foo.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Foo.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param bar 
  */
+
 data class Foo (
     @Json(name = "bar")
     val bar: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FormatTest.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FormatTest.kt
index d185226b0dc003c54f3d938a45f5a81bc88e118c..e746da485f97ba98bf6207ece6aee02ae3be148c 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FormatTest.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/FormatTest.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param integer 
@@ -31,6 +32,7 @@ import com.squareup.moshi.Json
  * @param patternWithDigits A string that is a 10 digit number. Can have leading zeros.
  * @param patternWithDigitsAndDelimiter A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.
  */
+
 data class FormatTest (
     @Json(name = "number")
     val number: java.math.BigDecimal,
@@ -64,6 +66,7 @@ data class FormatTest (
     /* A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. */
     @Json(name = "pattern_with_digits_and_delimiter")
     val patternWithDigitsAndDelimiter: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HasOnlyReadOnly.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HasOnlyReadOnly.kt
index 1e649d71f249f3c323d190477fac9c9329bed69b..04eef4d206b187d3b6645b5fd475b3f442bcd1f1 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HasOnlyReadOnly.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HasOnlyReadOnly.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param bar 
  * @param foo 
  */
+
 data class HasOnlyReadOnly (
     @Json(name = "bar")
     val bar: kotlin.String? = null,
     @Json(name = "foo")
     val foo: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HealthCheckResult.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HealthCheckResult.kt
index 8f53541bd22746ed558efec6c29e96522ada97e7..ce497df1fca47b57363abb28ca3989950196b8f6 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HealthCheckResult.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/HealthCheckResult.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model.
  * @param nullableMessage 
  */
+
 data class HealthCheckResult (
     @Json(name = "NullableMessage")
     val nullableMessage: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject.kt
index 70484e689460477719d1162bee9285e5410b846d..f2f290f4081ffa40fdb6436188fbb1ce2c1e1f3f 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject.kt
@@ -13,11 +13,13 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param name Updated name of the pet
  * @param status Updated status of the pet
  */
+
 data class InlineObject (
     /* Updated name of the pet */
     @Json(name = "name")
@@ -25,6 +27,7 @@ data class InlineObject (
     /* Updated status of the pet */
     @Json(name = "status")
     val status: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt
index 51f2137de920bea7cb37bbc176871728c9241318..ea1e3ae2411fea803c1807a4650814a0910e2f0f 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt
@@ -13,11 +13,13 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param additionalMetadata Additional data to pass to server
  * @param file file to upload
  */
+
 data class InlineObject1 (
     /* Additional data to pass to server */
     @Json(name = "additionalMetadata")
@@ -25,6 +27,7 @@ data class InlineObject1 (
     /* file to upload */
     @Json(name = "file")
     val file: java.io.File? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject2.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject2.kt
index 0f982f05a809cde410f53bfd8e338f52ba3e0665..ec48e39edf21574ed8bdb93d6a96d564573691e5 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject2.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject2.kt
@@ -13,11 +13,13 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param enumFormStringArray Form parameter enum test (string array)
  * @param enumFormString Form parameter enum test (string)
  */
+
 data class InlineObject2 (
     /* Form parameter enum test (string array) */
     @Json(name = "enum_form_string_array")
@@ -25,27 +27,30 @@ data class InlineObject2 (
     /* Form parameter enum test (string) */
     @Json(name = "enum_form_string")
     val enumFormString: InlineObject2.EnumFormString? = null
-)
+) 
+: Serializable 
 
 {
+
     /**
     * Form parameter enum test (string array)
     * Values: greaterThan,dollar
     */
+    
     enum class EnumFormStringArray(val value: kotlin.String){
     
         @Json(name = ">") greaterThan(">"),
     
         @Json(name = "$") dollar("$");
     
+
     }
-}
 
-{
     /**
     * Form parameter enum test (string)
     * Values: abc,minusEfg,leftParenthesisXyzRightParenthesis
     */
+    
     enum class EnumFormString(val value: kotlin.String){
     
         @Json(name = "_abc") abc("_abc"),
@@ -54,7 +59,8 @@ data class InlineObject2 (
     
         @Json(name = "(xyz)") leftParenthesisXyzRightParenthesis("(xyz)");
     
+
     }
-}
 
+}
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject3.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject3.kt
index 35dc49df571f8685fee7e050325c13adee565178..b2725c7fc12775609ccf939314ba1ea804dca211 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject3.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject3.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param integer None
@@ -30,6 +31,7 @@ import com.squareup.moshi.Json
  * @param password None
  * @param callback None
  */
+
 data class InlineObject3 (
     /* None */
     @Json(name = "number")
@@ -73,6 +75,7 @@ data class InlineObject3 (
     /* None */
     @Json(name = "callback")
     val callback: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject4.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject4.kt
index 52eef17034acd8a5b9be92e8a988abe218d228d1..f6776d3b7fcb8b5293155b8ebe7ff93e823ef726 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject4.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject4.kt
@@ -13,11 +13,13 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param param field1
  * @param param2 field2
  */
+
 data class InlineObject4 (
     /* field1 */
     @Json(name = "param")
@@ -25,6 +27,7 @@ data class InlineObject4 (
     /* field2 */
     @Json(name = "param2")
     val param2: kotlin.String
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject5.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject5.kt
index ca95c5ee037e484bdde417ecd4901001b43810d3..0497fa03e67b11118fb709c011ff678eee0c1cea 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject5.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineObject5.kt
@@ -13,11 +13,13 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param additionalMetadata Additional data to pass to server
  * @param requiredFile file to upload
  */
+
 data class InlineObject5 (
     /* file to upload */
     @Json(name = "requiredFile")
@@ -25,6 +27,7 @@ data class InlineObject5 (
     /* Additional data to pass to server */
     @Json(name = "additionalMetadata")
     val additionalMetadata: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineResponseDefault.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineResponseDefault.kt
index 5768639b0b22c981aa8e396e325cf358597eeaba..b09c724605e00abaa5d717004ac83a675d6de800 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineResponseDefault.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/InlineResponseDefault.kt
@@ -14,13 +14,16 @@ package org.openapitools.client.models
 import org.openapitools.client.models.Foo
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param string 
  */
+
 data class InlineResponseDefault (
     @Json(name = "string")
     val string: Foo? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/List.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/List.kt
index 6e2a75355bdc7eeb4c45cd06cfea4ff5be512268..43f321eabcbfd3e553cbeee1597d86195cbfe349 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/List.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/List.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
- * @param &#x60;123minusList&#x60; 
+ * @param ``123minusList`` 
  */
+
 data class List (
     @Json(name = "123-list")
-    val `123minusList`: kotlin.String? = null
-)
+    val ``123minusList``: kotlin.String? = null
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MapTest.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MapTest.kt
index dc1096dc70b1968390e5ff9444f022f3342dad62..bf1aa56a158237a5c7aa6f69f668adcc082e6980 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MapTest.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MapTest.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param mapMapOfString 
@@ -20,6 +21,7 @@ import com.squareup.moshi.Json
  * @param directMap 
  * @param indirectMap 
  */
+
 data class MapTest (
     @Json(name = "map_map_of_string")
     val mapMapOfString: kotlin.collections.Map<kotlin.String, kotlin.collections.Map<kotlin.String, kotlin.String>>? = null,
@@ -29,20 +31,24 @@ data class MapTest (
     val directMap: kotlin.collections.Map<kotlin.String, kotlin.Boolean>? = null,
     @Json(name = "indirect_map")
     val indirectMap: kotlin.collections.Map<kotlin.String, kotlin.Boolean>? = null
-)
+) 
+: Serializable 
 
 {
+
     /**
     * 
     * Values: uPPER,lower
     */
+    
     enum class MapOfEnumString(val value: kotlin.collections.Map<kotlin.String, kotlin.String>){
     
         @Json(name = "UPPER") uPPER("UPPER"),
     
         @Json(name = "lower") lower("lower");
     
+
     }
-}
 
+}
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MixedPropertiesAndAdditionalPropertiesClass.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MixedPropertiesAndAdditionalPropertiesClass.kt
index 7d835a2af5411f7f7be6a433ea59674bed5899ef..1551efc4c2a088caa0e7b07cb71a31f99505b583 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MixedPropertiesAndAdditionalPropertiesClass.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/MixedPropertiesAndAdditionalPropertiesClass.kt
@@ -14,12 +14,14 @@ package org.openapitools.client.models
 import org.openapitools.client.models.Animal
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param uuid 
  * @param dateTime 
  * @param map 
  */
+
 data class MixedPropertiesAndAdditionalPropertiesClass (
     @Json(name = "uuid")
     val uuid: java.util.UUID? = null,
@@ -27,6 +29,7 @@ data class MixedPropertiesAndAdditionalPropertiesClass (
     val dateTime: java.time.LocalDateTime? = null,
     @Json(name = "map")
     val map: kotlin.collections.Map<kotlin.String, Animal>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Model200Response.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Model200Response.kt
index b2e792c8e8e8c619f0ff953b134146c2a1456d9e..bb071875225b7de1c568fc975b9ff09b8595e9a9 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Model200Response.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Model200Response.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Model for testing model name starting with number
  * @param name 
  * @param propertyClass 
  */
+
 data class Model200Response (
     @Json(name = "name")
     val name: kotlin.Int? = null,
     @Json(name = "class")
     val propertyClass: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Name.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Name.kt
index 72cb9d7ad64b8be3e433837472fc0ea7100515fa..1362bd97c1b74551678af13f9ceadcfeb39b3b8e 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Name.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Name.kt
@@ -13,13 +13,15 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Model for testing model name same as property name
  * @param name 
  * @param snakeCase 
  * @param property 
- * @param &#x60;123number&#x60; 
+ * @param ``123number`` 
  */
+
 data class Name (
     @Json(name = "name")
     val name: kotlin.Int,
@@ -28,7 +30,8 @@ data class Name (
     @Json(name = "property")
     val property: kotlin.String? = null,
     @Json(name = "123Number")
-    val `123number`: kotlin.Int? = null
-)
+    val ``123number``: kotlin.Int? = null
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NullableClass.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NullableClass.kt
index 86bb11c5c1d90cc2678298e0d4fbfb76d3c695e8..7bfd1d97c1a281f29d0ae093befb82286531a4c6 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NullableClass.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NullableClass.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param integerProp 
@@ -28,6 +29,7 @@ import com.squareup.moshi.Json
  * @param objectAndItemsNullableProp 
  * @param objectItemsNullable 
  */
+
 data class NullableClass (
     @Json(name = "integer_prop")
     val integerProp: kotlin.Int? = null,
@@ -53,6 +55,7 @@ data class NullableClass (
     val objectAndItemsNullableProp: kotlin.collections.Map<kotlin.String, kotlin.Any>? = null,
     @Json(name = "object_items_nullable")
     val objectItemsNullable: kotlin.collections.Map<kotlin.String, kotlin.Any>? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NumberOnly.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NumberOnly.kt
index 7385bd9523148cac8e928fd1cc6d7e6ee1ac03f4..d14ad1907e1852f10b852787822be69381cc590a 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NumberOnly.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/NumberOnly.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param justNumber 
  */
+
 data class NumberOnly (
     @Json(name = "JustNumber")
     val justNumber: java.math.BigDecimal? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
index d33f3bf23935958747b0daa3255199e330a5c4a9..07459585e9989fecde7f3bf329e62b54cdf0996f 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param id 
@@ -22,6 +23,7 @@ import com.squareup.moshi.Json
  * @param status Order Status
  * @param complete 
  */
+
 data class Order (
     @Json(name = "id")
     val id: kotlin.Long? = null,
@@ -36,13 +38,16 @@ data class Order (
     val status: Order.Status? = null,
     @Json(name = "complete")
     val complete: kotlin.Boolean? = null
-)
+) 
+: Serializable 
 
 {
+
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
+    
     enum class Status(val value: kotlin.String){
     
         @Json(name = "placed") placed("placed"),
@@ -51,7 +56,8 @@ data class Order (
     
         @Json(name = "delivered") delivered("delivered");
     
+
     }
-}
 
+}
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterComposite.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterComposite.kt
index 304f88c52df45b8fa6e20245e1a1673fbe98658c..21565c2cff392e74b19f685b7108d02bce4facaf 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterComposite.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterComposite.kt
@@ -13,12 +13,14 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param myNumber 
  * @param myString 
  * @param myBoolean 
  */
+
 data class OuterComposite (
     @Json(name = "my_number")
     val myNumber: java.math.BigDecimal? = null,
@@ -26,6 +28,7 @@ data class OuterComposite (
     val myString: kotlin.String? = null,
     @Json(name = "my_boolean")
     val myBoolean: kotlin.Boolean? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnum.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnum.kt
index 8d84d2718738902aef039d013a3a578f902676fc..86ce0b25a147c10821e77e5fe5ab39db3b05cd28 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnum.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnum.kt
@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
 * 
 * Values: placed,approved,delivered
 */
+
 enum class OuterEnum(val value: kotlin.String){
 
 
@@ -33,5 +34,6 @@ enum class OuterEnum(val value: kotlin.String){
     delivered("delivered");
 
 
+
 }
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumDefaultValue.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumDefaultValue.kt
index b3fa7c4524287dbe71f0de860170e2fc2648e457..bf9e3e79960e562c3b81b4aa2648d50e4a26ecaa 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumDefaultValue.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumDefaultValue.kt
@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
 * 
 * Values: placed,approved,delivered
 */
+
 enum class OuterEnumDefaultValue(val value: kotlin.String){
 
 
@@ -33,5 +34,6 @@ enum class OuterEnumDefaultValue(val value: kotlin.String){
     delivered("delivered");
 
 
+
 }
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumInteger.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumInteger.kt
index 9defa9842e4815e3b3c78a989513329982cf9e63..c7345e41ebe2c2fee7e35830ea047f8056ce6b14 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumInteger.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumInteger.kt
@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
 * 
 * Values: _0,_1,_2
 */
+
 enum class OuterEnumInteger(val value: kotlin.Int){
 
 
@@ -33,5 +34,6 @@ enum class OuterEnumInteger(val value: kotlin.Int){
     _2(2);
 
 
+
 }
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumIntegerDefaultValue.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumIntegerDefaultValue.kt
index 8b9a7e71846eea643a9a9784cae6aa41e84b6d76..f8435385ea3836dbe6eb5ce36712f2fea1b708f7 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumIntegerDefaultValue.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/OuterEnumIntegerDefaultValue.kt
@@ -18,6 +18,7 @@ import com.squareup.moshi.Json
 * 
 * Values: _0,_1,_2
 */
+
 enum class OuterEnumIntegerDefaultValue(val value: kotlin.Int){
 
 
@@ -33,5 +34,6 @@ enum class OuterEnumIntegerDefaultValue(val value: kotlin.Int){
     _2(2);
 
 
+
 }
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
index b0c73cfb5144cc5451912eece07a96f45fc10fae..23abc63ce3991707e6a21bf8eaf235e776f901f1 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -15,6 +15,7 @@ import org.openapitools.client.models.Category
 import org.openapitools.client.models.Tag
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param id 
@@ -24,6 +25,7 @@ import com.squareup.moshi.Json
  * @param tags 
  * @param status pet status in the store
  */
+
 data class Pet (
     @Json(name = "name")
     val name: kotlin.String,
@@ -38,13 +40,16 @@ data class Pet (
     /* pet status in the store */
     @Json(name = "status")
     val status: Pet.Status? = null
-)
+) 
+: Serializable 
 
 {
+
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
+    
     enum class Status(val value: kotlin.String){
     
         @Json(name = "available") available("available"),
@@ -53,7 +58,8 @@ data class Pet (
     
         @Json(name = "sold") sold("sold");
     
+
     }
-}
 
+}
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ReadOnlyFirst.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ReadOnlyFirst.kt
index 52bf083649ae3f8f399a0409015d6f00c0e53997..325a4c5ffd8fa54fabcaf963a274597a01692c4e 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ReadOnlyFirst.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ReadOnlyFirst.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param bar 
  * @param baz 
  */
+
 data class ReadOnlyFirst (
     @Json(name = "bar")
     val bar: kotlin.String? = null,
     @Json(name = "baz")
     val baz: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Return.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Return.kt
index 91c531468436316ae88c8be0439b16c04e5478d8..6670a26a8f965cd3a1d12385e56b9d959907de98 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Return.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Return.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * Model for testing reserved words
- * @param &#x60;return&#x60; 
+ * @param ``return`` 
  */
+
 data class Return (
     @Json(name = "return")
-    val `return`: kotlin.Int? = null
-)
+    val ``return``: kotlin.Int? = null
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/SpecialModelname.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/SpecialModelname.kt
index a4faf3fd57a590e605980ff2bc444ba9bbea8a53..2bcfeb506eb3812fc1b2694068a9eebbdbce6531 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/SpecialModelname.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/SpecialModelname.kt
@@ -13,13 +13,16 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket 
  */
+
 data class SpecialModelname (
     @Json(name = "$special[property.name]")
     val dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket: kotlin.Long? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 37e9e0eaef3d4c6b49aa047524a0edd08eb62022..7596c7d495d5b14222b2559de31cb6b9494b8b9a 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -13,16 +13,19 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param id 
  * @param name 
  */
+
 data class Tag (
     @Json(name = "id")
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
index 5301e72d376342cba3ad9cb3f2286d0a39e4e5b7..d6bd140f13aa285ba8a9e49f7107d6ce654bce33 100644
--- a/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/openapi3/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -13,6 +13,7 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
+import java.io.Serializable
 /**
  * 
  * @param id 
@@ -24,6 +25,7 @@ import com.squareup.moshi.Json
  * @param phone 
  * @param userStatus User Status
  */
+
 data class User (
     @Json(name = "id")
     val id: kotlin.Long? = null,
@@ -42,6 +44,7 @@ data class User (
     /* User Status */
     @Json(name = "userStatus")
     val userStatus: kotlin.Int? = null
-)
+) 
+: Serializable 
 
 
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt
index d61abe165a06a07f02fbfb2e41c86e24682cf34b..5ced7087da8af814a4bdc256c7d9b0ddbd430ad9 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt
@@ -12,6 +12,7 @@
 package org.openapitools.server.models
 
 
+import java.io.Serializable
 /**
  * Describes the result of uploading an image resource
  * @param code 
@@ -22,7 +23,10 @@ data class ApiResponse (
     val code: kotlin.Int? = null,
     val type: kotlin.String? = null,
     val message: kotlin.String? = null
-) {
+) 
+: Serializable 
+
+{
 
 }
 
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt
index 5b6aab934e2502c545f79088bc5b21a8501393cb..a347a27877f17f9f18eb03a7e32ac24cf6286d10 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt
@@ -12,6 +12,7 @@
 package org.openapitools.server.models
 
 
+import java.io.Serializable
 /**
  * A category for a pet
  * @param id 
@@ -20,7 +21,10 @@ package org.openapitools.server.models
 data class Category (
     val id: kotlin.Long? = null,
     val name: kotlin.String? = null
-) {
+) 
+: Serializable 
+
+{
 
 }
 
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt
index 119722f85c19ad80bae7a3240f61e64791df358d..f3eba3816ed4b9fdb2281e78433ab01d959a9d0a 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt
@@ -12,6 +12,7 @@
 package org.openapitools.server.models
 
 
+import java.io.Serializable
 /**
  * An order for a pets from the pet store
  * @param id 
@@ -29,7 +30,10 @@ data class Order (
     /* Order Status */
     val status: Order.Status? = null,
     val complete: kotlin.Boolean? = null
-) {
+) 
+: Serializable 
+
+{
 
     /**
     * Order Status
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt
index a21ea8ed37eda3558ad06d70e01c14afa4896b2d..07644fc8bd26391f02fc77a8978d7a3e802dbf85 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt
@@ -14,6 +14,7 @@ package org.openapitools.server.models
 import org.openapitools.server.models.Category
 import org.openapitools.server.models.Tag
 
+import java.io.Serializable
 /**
  * A pet for sale in the pet store
  * @param id 
@@ -31,7 +32,10 @@ data class Pet (
     val tags: kotlin.Array<Tag>? = null,
     /* pet status in the store */
     val status: Pet.Status? = null
-) {
+) 
+: Serializable 
+
+{
 
     /**
     * pet status in the store
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt
index eadd8e74d39800926163613d66c24fe4911eda8a..aa13b7ca76cbcd7cfc8c139e0a701e81f3522075 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt
@@ -12,6 +12,7 @@
 package org.openapitools.server.models
 
 
+import java.io.Serializable
 /**
  * A tag for a pet
  * @param id 
@@ -20,7 +21,10 @@ package org.openapitools.server.models
 data class Tag (
     val id: kotlin.Long? = null,
     val name: kotlin.String? = null
-) {
+) 
+: Serializable 
+
+{
 
 }
 
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt
index bf6e8f53ecc5081c1325cd9186eb74528d011935..0aa8a67299f5b2988358d18d969c084c5a344d54 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt
@@ -12,6 +12,7 @@
 package org.openapitools.server.models
 
 
+import java.io.Serializable
 /**
  * A User who is purchasing from the pet store
  * @param id 
@@ -33,7 +34,10 @@ data class User (
     val phone: kotlin.String? = null,
     /* User Status */
     val userStatus: kotlin.Int? = null
-) {
+) 
+: Serializable 
+
+{
 
 }